美文网首页前端之他山之石
优雅使用 Element-UI 的 Loading 组件

优雅使用 Element-UI 的 Loading 组件

作者: 最尾一名 | 来源:发表于2018-11-13 17:10 被阅读1019次

    背景

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

    相关文章

      网友评论

        本文标题:优雅使用 Element-UI 的 Loading 组件

        本文链接:https://www.haomeiwen.com/subject/gemlfqtx.html