element ui loading加载开启与关闭
我们在使用element ui loading加载组件的服务方式的时候想要在请求开始之前开启组件,请求成功或者失败时关闭组件,官网上是在一个方法里面写着开启与关闭,所以我们可以做一个小小的封装;
//loading加载
openfullscreen() {
const loading = this.$loading({
lock: true,
text: 'loading',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
return loading;
}这里我们在开启loading的同时,返回loading;
closefullscreen(loading){
loading.close();
},关闭时接受开启返回的loading;
//开启
this.openfullscreen();
//vue框架 axios请求
this.$http.post("url").then(res => {
//请求成功关闭;
this.closefullscreen(this.openfullscreen());
}).catch(()=>{
//请求失败关闭;
this.closefullscreen(this.openfullscreen());
})封装完的使用;
使用element ui的loading组件
element-ui 提供了 loading 组件,通过对于这个组件进行一些处理,我们能做到在发送请求的时候进行 loading 操作
实现方式
先写一个loading.js文件
import { loading } from 'element-ui';
let loadingcount = 0;
let loading;
const startloading = () => {
loading = loading.service({
lock: true,
text: '加载中……',
background: 'rgba(0, 0, 0, 0.7)'
});
};
const endloading = () => {
loading.close();
};
export const showloading = () => {
if (loadingcount === 0) {
startloading();
}
loadingcount += 1;
};
export const hideloading = () => {
if (loadingcount <= 0) {
return;
}
loadingcount -= 1;
if (loadingcount === 0) {
endloading();
}
};再在axios的interceptor中调用
// ...
import { showloading, hideloading } from './loading';
/* 请求拦截器(请求之前的操作) */
ajax.interceptors.request.use((req) => {
showloading();
return req;
}, err => promise.reject(err));
/* 请求之后的操作 */
ajax.interceptors.response.use((res) => {
hideloading();
return res;
return promise.reject(res);
}, (err) => {
hideloading();
return promise.reject(err);
});总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论