前端开发工作中,恳求接口时,为了进步页面的观赏性和用户的体会,咱们会在页面上添加loading来阻止用户操作来等待接口的回来。

首要咱们需求引进element-ui的Loading组件,这个组件有两种调用办法:

1、经过指令v-loading

2、经过服务Loading.service();

目的:完成部分loading加载作用,如果运用办法2会整个页面都呈现加载作用,这儿我只想在路由切换区域部分呈现加载作用,故选用办法1 v-loading

运用办法1时存在问题,报错Can‘t resolve ‘element-plus/es/components/loading-directive/style/index‘

解决办法:这儿选用自定义load指令,给Element-Plus提供的指令基础上再封装一层(其他解决办法可参考:element-plus(1.3.0-beta.5)按需引进,v-loading报错 – ()):

main.js文件:

import { createApp } from 'vue'
import { vLoading } from 'element-plus/es/components/loading/src/directive' // 按需引进loading组件
const app = createApp(App)
app.directive('load', vLoading) // 自定义load指令

Vue3+Axios+Element-Plus 完成大局loading加载

运用自定义指令,在恳求某个接口的时候,将loading改为true,当接口恳求后改为false,这样就能完成loading的过渡作用了。

loading能够存储在vuex中,在index.vue中运用computed监听loading变化完成显示隐藏作用。

运用指令,computed监听loading的状态。

Vuex 中state是动态更新的,也便是不论在任何地方对某一个state的值做了修改,那么依靠该数据的 DOM 也将会发生改动。

Vue3+Axios+Element-Plus 完成大局loading加载

store

Vue3+Axios+Element-Plus 完成大局loading加载

loading.js

Vue3+Axios+Element-Plus 完成大局loading加载

axios.js

这儿setTimeout仅用于检查作用,实际开发中要去掉

Vue3+Axios+Element-Plus 完成大局loading加载

Vue3+Axios+Element-Plus 完成大局loading加载