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); });
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论