赞
踩
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);
- });

作者:最尾一名
链接:https://www.jianshu.com/p/95ec2286bc6d
来源:简书
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。