场景
在后台系统中,每次接口提交的时候都需要添加一个loading来告知用户我们正在进行系统操作,但是这样需要我们反复复制代码,并且需要再三确保loading关闭的时机,低劳动且容易忘记
解决
在全局的axios添加服务loading,根据api配置的参数判断是否展示loading,根据接口状态来添加和关闭loading
第一步:axios添加loading服务
// axios.js
import { Loading } from 'element-ui';
// 全局loading
let loadingInstance;
axios.interceptors.request.use((config) => {
// ...一些其他操作
// 判断api中是否有loading参数,有就展示全局loading
if (config.loadingOptions) {
loadingInstance = Loading.service(config.loadingOptions);
}
}, (error) => {
// 请求错误关闭loading
loadingInstance && loadingInstance.close();
// 一些其他操作
});
// 返回状态判断(添加响应拦截器)
axios.interceptors.response.use(response => {
// 响应成功关闭loading
loadingInstance && loadingInstance.close();
}, error => {
// 响应失败关闭loading
loadingInstance && loadingInstance.close();
});
第二步:在想要加loading的接口中加入标识
const getCityConfig = (params) => axios.get(getCityConfigApi, {
params,
loadingOptions: {
fullscreen: true,
text: '请稍等...'
}
});