iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vue如何实现全局loading
  • 554
分享到

Vue如何实现全局loading

2024-04-02 19:04:59 554人浏览 泡泡鱼
摘要

这篇文章将为大家详细讲解有关Vue如何实现全局loading,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。思路我们项目请求使用的是axiOS,那么我们就在请求前后进行拦截

这篇文章将为大家详细讲解有关Vue如何实现全局loading,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

思路

我们项目请求使用的是axiOS,那么我们就在请求前后进行拦截,添加我们需要的东西,然后通信控制loading,通信方式我就不写了,有个老哥写的不错,可以去看看传送门

代码实现

首先对axios进行封装 如果你想进行全局错误提醒 也可以在拦截的代码进行操作 具体代码看下面




const axiosConfig = {
 baseURL: process.env.RESTapi_PREFIX,
 // 请求前的数据处理
 // transfORMRequest: [function (data) {
 // return data
 // }],
 // 请求后的数据处理
 // transformResponse: [function (data) {
 // return data
 // }],
 // 自定义的请求头
 // headers: {
 // 'Content-Type': 'application/JSON'
 // },
 // 查询对象序列化函数
 // paramsSerializer: function (params) {
 // return qs.stringify(params)
 // },
 // 超时设置s
 timeout: 10000,
 // 跨域是否带Token 项目中加上会出错
 // withCredentials: true,
 // 自定义请求处理
 // adapter: function(resolve, reject, config) {},
 // 响应的数据格式 json / blob /document /arraybuffer / text / stream
 responseType: 'json',
 // xsrf 设置
 xsrfCookieName: 'XSRF-TOKEN',
 xsrfHeaderName: 'X-XSRF-TOKEN',
 // 下传和下载进度回调
 onUploadProgress: function (progressEvent) {
 Math.round(progressEvent.loaded * 100 / progressEvent.total)
 },
 onDownloadProgress: function (progressEvent) {
 Math.round(progressEvent.loaded * 100 / progressEvent.total)
 },
 // 最多转发数,用于node.js
 maxRedirects: 5,
 // 最大响应数据大小
 maxContentLength: 2000,
 // 自定义错误状态码范围
 validateStatus: function (status) {
 return status >= 200 && status < 300
 }
 // 用于node.js
 // HttpAgent: new http.Agent({ keepAlive: true }),
 // httpsAgent: new https.Agent({ keepAlive: true })
}

export default axiosConfig

开始构建请求对象

const request = axios.create(config)

请求之前拦截

// 请求拦截器
request.interceptors.request.use(
 config => {
 // 触发loading效果
 store.dispatch('SetLoding', true)
 return config
 },
 error => {
 return Promise.reject(error)
 }
)

请求后拦截

// 返回状态判断(添加响应拦截器)
request.interceptors.response.use(

 (res) => {
 // 加载loading
 store.dispatch('SetLoding', false)
 // 如果数据请求失败
 let message = ''
 let prefix = res.config.method !== 'get' ? '操作失败:' : '请求失败:'
 switch (code) {
  case 400: message = prefix + '请求参数缺失'; break
  case 401: message = prefix + '认证未通过'; break
  case 404: message = prefix + '此数据不存在'; break
  case 406: message = prefix + '条件不满足'; break
  default: message = prefix + '服务器出错了'; break
 }
 let error = new Error(message)

 if (tip) {
  errorTip(vueInstance, error, message)
 }
 let result = { ...res.data, error: error }
 return result
 },
 (error, a, b) => {
 store.dispatch('SetLoding', false)
 process.env.NODE_ENV !== 'production' && console.log(error)
 return { data: null, code: 500, error: error }
 }
)

通信

我这边通信用的是Vuex,其他方式类似

 state: {
 loading: 0
 },
 mutations: {
 SET_LOADING: (state, loading) => {
  loading ? ++state.loading : --state.loading
 },
 CLEAN_LOADING: (state) => {
  state.loading = 0
 }
 },
 actions: {
 SetLoding ({ commit }, boolean) {
  commit('SET_LOADING', boolean)
 },
 CLEANLOADING ({commit}) {
  commit('CLEAN_LOADING')
 }
 },
 getters: {
 loading (state) {
  return state.loading
 }
 }

state采用计数方式能够避免一个页面可能同时有多个ajax请求,导致loading闪现多次,这样就会在所有ajax都结束后才隐藏loading,不过有个很重要的地方需要注意,每一个路由跳转时无论ajax是否结束,都必须把state的值设置为0,具体下面的代码

router.beforeEach((to, from, next) => {
 store.dispatch('CLEANLOADING')
 next()
})

全局的loading我这边是加在home.vue里,由于我这个项目是后台管理,可以加在layout.vue,其实都差不多

<div class="request-loading" :class="{'request-loading-show':loading}">
 <div class="request-loading-main" ></div>
</div>
import { mapGetters } from 'vuex'
export default { 
 data () {
 
 }
 computed: {
 ...mapState(['loading]) 
 }
<scrirpt lang="sCSS" scoped>
//这个我就不写了 loading样式不同 我们代码也就不同
</script>

关于“Vue如何实现全局loading”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: Vue如何实现全局loading

本文链接: https://www.lsjlt.com/news/71046.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Vue如何实现全局loading
    这篇文章将为大家详细讲解有关Vue如何实现全局loading,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。思路我们项目请求使用的是axios,那么我们就在请求前后进行拦截...
    99+
    2024-04-02
  • Vue中怎么实现一个全局loading组件
    Vue中怎么实现一个全局loading组件,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。loading.js:import '...
    99+
    2024-04-02
  • 使用Axios Element如何实现全局请求loading
    这篇文章给大家分享的是有关使用Axios Element如何实现全局请求loading的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。背景业务需求是这样子的,每当发请求到后端时就触...
    99+
    2024-04-02
  • Vue全局水印如何实现
    今天小编给大家分享一下Vue全局水印如何实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。...
    99+
    2024-04-02
  • vue全局挂载如何实现APP全局弹窗
    本篇内容主要讲解“vue全局挂载如何实现APP全局弹窗”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue全局挂载如何实现APP全局弹窗”吧!需求背景app端对接网页端的客服系统,在用户实现网页...
    99+
    2023-06-30
  • vue-element-admin 全局loading加载等待
    最近遇到需求:   全局加载loading,所有接口都要可以手动控制是否展示加载等待的功能 百度了一下,发现好多是写在拦截器内的,在拦截器内调用element ui的loading方...
    99+
    2024-04-02
  • Vue全局变量和局部变量如何实现
    这篇文章主要介绍“Vue全局变量和局部变量如何实现”,在日常操作中,相信很多人在Vue全局变量和局部变量如何实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue全局变量和局部变量如何实现”的疑惑有所帮助!...
    99+
    2023-07-04
  • Vue如何实现全局的toast组件
    这篇文章主要介绍“Vue如何实现全局的toast组件”,在日常操作中,相信很多人在Vue如何实现全局的toast组件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue如何实现全局的toast组件”的疑惑有所...
    99+
    2023-07-05
  • vue如何实现全局组件注册
    这篇文章主要为大家展示了“vue如何实现全局组件注册”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue如何实现全局组件注册”这篇文章吧。全局组件注册1 一般情...
    99+
    2024-04-02
  • Vue3实现全局loading指令的示例详解
    目录前言1.完成loading组件2.新建⼀个loading.js⽂件,⽤来写loading的⾃定义指令逻辑2.1 创建这个组件对应的 DOM2.2 在 loading.js 文件中...
    99+
    2024-04-02
  • vue如何实现全局过滤器注册
    这篇文章主要介绍了vue如何实现全局过滤器注册,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。全局过滤器注册1 一般情况官方注册过滤器的方式:...
    99+
    2024-04-02
  • 在Vue中如何实现添加全局store
    小编给大家分享一下在Vue中如何实现添加全局store,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Vue添加全局store在命令行中输入安装npm install --save vuex在m...
    99+
    2023-06-29
  • vue网站全局置灰功能如何实现
    本篇内容介绍了“vue网站全局置灰功能如何实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、前端独立实现两种不同的逻辑,一种是前端自己实...
    99+
    2023-07-04
  • vue如何实现消息提示全局组件
    这篇文章主要介绍了vue如何实现消息提示全局组件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。使用vue-cli3.0生成项目toast全局...
    99+
    2024-04-02
  • vue如何实现全局接入百度地图
    小编给大家分享一下vue如何实现全局接入百度地图,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、获取ak密钥登录网址 https://lbsyun.baidu.com/注册百度地图开放平台账号,填写认证信息,并且创建应用...
    99+
    2023-06-29
  • Vue中的echarts图表如何实现loading效果
    目录echarts图表实现loading效果Vue使用echarts图表总结安装echarts依赖创建图表在页面中的使用(在这里我用的局部引入)echarts图表实现loading效...
    99+
    2022-11-13
    Vue echarts图表 Vue loading效果 echarts图表实现loading
  • Xamarin如何实现全局搜索
    这篇文章主要为大家展示了“Xamarin如何实现全局搜索”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Xamarin如何实现全局搜索”这篇文章吧。全局搜索新版本的一个顶级特征就是工具栏上的全局搜...
    99+
    2023-06-27
  • 如何实现socks5全局代理
    要实现socks5全局代理,需要进行以下步骤:1. 安装socks5服务器:首先需要在你的服务器或者本地机器上搭建一个socks5服...
    99+
    2023-08-18
    socks5
  • springMvc全局异常如何实现
    这篇文章给大家分享的是有关springMvc全局异常如何实现的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一般使用第二种方法去实现全局异常SimpleMappingExceptionResolver实现全局异常,...
    99+
    2023-06-29
  • vue如何定义全局变量和全局方法实例代码
    目录一、给vue定义全局变量1.定义专用模块来配置全局变量2.通过全局变量挂载到Vue.prototype3.使用vuex二、给vue定义全局方法1.将方法挂载到 Vue.proto...
    99+
    2023-05-17
    vue 定义全局变量 vue 定义全局方法 vue中如何定义全局变量
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作