element-ui全屏全局加载动画(请求,路由加载)

为的目的就是让用户在使用的时候不至于一直看到你的页面等待,优化用户的使用体验。
使用的是Element-ui 的全局loading加载,以服务方式调用,使用Vuex,结合全局路由守卫与请求拦截器,实现这个内容。
在这里插入图片描述
在这里插入图片描述
建议使用Vuex新建公用方法去修改状态。

在Vuex的js文件中以服务的方式调用,引入 Loading 服务

import { Loading } from 'element-ui';

并在state(Vuex集中变量存储仓库)中新增一个变量为options

options 参数为 Loading 的配置项,具体见下表。LoadingService 会返回一个 Loading 实例,可通过调用该实例的 close 方法来关闭它:
在这里插入图片描述
我们使用他的基本配置项即可

const state={
options:{
        lock: true,
        text: '加载中,请稍后',//加载动画的文字
        spinner: 'el-icon-loading',//加载动画的图标
        background: 'rgba(0, 0, 0, 0.7)'//加载动画的背景
    },
}

在你的mutations中 新建你的全局方法调用这个服务

const mutations={
	showLoading(state,val){
        let loadingInstance = Loading.service(state.options);
        val? Loading.service(state.options) : loadingInstance.close() //这里判断调用方法时候的参数值,打开服务的时候传true,关闭服务的时候传false
    },
}

定义好了你的方法后,你就可以使用他们:
打开你的router文件,引入Vuex

import vuex from '../vuex/store'

router.beforeEach前置路由守卫放行回调的时候去触发,在后置钩子去关闭他。

//前置守卫
router.beforeEach((to, from, next) => {
	if(login){//这里写的假判断,一般在你的路由守卫中,什么时候调用next(),什么时候调用你的打开服务方法
		vuex.commit('showLoading',true);
		next()
	}else{
		next({
                path: '/'
            })
	}
})
//后置钩子
router.afterEach(() =>{
    vuex.commit('showLoading',false)
})

至此,页面跳转时的全屏加载动画就做好了。

请求的时候使用同样的方式去调用这两个方法;

在你的请求拦截的js文件中引入Vuex

import vuex from '../vuex/store'

发起请求的时候,在你的axios.interceptors.request.use去调用方法传true,在axios.interceptors.response.use调用方法传false

在请求或响应的方法中找到在这里插入图片描述
你的方法就在这里边调用即可。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值