通过Axios管理全局加载动画,以及登录状态监听

基于Axios全局管理配置完成:Axios全局管理 - 简书


1、在http.js中引入vuex,并引入UI组件用作于消息提示

import store from '../store/index'; // 引入vuex

import iView from 'view-design'; // 引入iView


2、在https.js中的request拦截器加入登录状态处理

service.interceptors.request.use(

        config => {

                store.state.globalLoading = true; // globalLoading为vuex中设置的全局加载动画

                // 将globalLoading开始设置为true,请求开始,动画开始执行

                return config;

        },

        error => {

                store.state.globalLoading = false; // 请求发出时出错,停止全局动画的加载,globalLoading设置为false

                Promise.reject(error);

        }

)


3、在http response 拦截器中根据返回的结果来停止全局动画(globalLoading)停止(false)

对所有错误信息统一通知

如果项目有token校验,在返回结果中发现token过期,则需要触发另一个状态(是否需要重新登录),以免发起多余请求

service.interceptors.response.use(

        config => {

                store.state.globalLoading = false; // 接口正常返回,需要停止全局动画

                return config;

        },

        error => {

                store.state.globalLoading = false; // 出现错误,需要停止全局动画

                // IfReloadLogin 是在vuex中定义的是否需要重新登录的变量

                if(store.state.IfReloadLogin) {

                        store.state.IfReloadLogin = false;

                }else{

                        if (res.status == '401') { // 401是token失效的标识,实际需要跟后台沟通

                                store.state.IfReloadLogin = true;

                        }else{

                                store.state.IfReloadLogin = false;

                        }

                        iView.Message.warning(res.data.Message); // 对于错误信息统一提示,不做单独处理

                        return Promise.reject(res.data)

                }

        }

)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容