ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

axios+store+loading的配置

2022-06-28 19:02:34  阅读:194  来源: 互联网

标签:load axios false loading error true response store


介绍

在程序中一般会对响应时间比较长的操作进行loading的配置,避免用户的重复操作。

配置store

添加一个store/index.js文件

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    // 全局的load变量
    isAppending: false
  },
  getters: {
  },
  mutations: {
    // 修改load变量的值
    changeAppending(state, bool) {
      state.isAppending = bool;
    }
  },

})

main.js引入

import store from '@/store/index.js'

new Vue({
  store,
  router,
  render: h => h(App)
}).$mount('#app')

在axios的拦截器中配置

import store from '../store/index'

// request拦截器  可对请求进行相应的处理
axios.interceptors.request.use(
  function (config) {
    config.withCredentials = true
    // 默认永不超时
    config.timeout = 0
    let val = window.sessionStorage.getItem('tokenValue')
    let key = window.sessionStorage.getItem('tokenName')
    let token = {}
    Vue.set(token, key, val)
    if (token) {
      config.headers = token
    }

    // 设置全局的load变量值为true,也就是开启load
    store.commit("changeAppending", true);

    return config
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error)
  }
)
//response拦截器
axios.interceptors.response.use(
  function (response) {
    // 设置全局的load变量值为false,也就是关闭load
    store.commit("changeAppending", false);

    if (response.data.code === 0) {
      return response
    }
    if (response.data.code === -1) {
      router.replace({
        name: 'login'
      });
    }
    Message({
      type: 'error',
      message: response.data.message,
      showClose: true,
    })

    // 将未处理的异常往外抛
    return Promise.reject(response)
  },
  function (error) {
    // 设置全局的load变量值为false,也就是关闭load
    store.commit("changeAppending", false);

    // todo: 做一些其他日志记录处理
    Message({
      type: 'error',
      message: '服务器错误,' + error,
      showClose: true,
    })
  }
)

组件使用

直接绑定在需要load的标签上

 <a-button type="primary" @click="submit" style="margin-right: 10px" :loading="$store.state.isAppending">确 定</a-button>

标签:load,axios,false,loading,error,true,response,store
来源: https://www.cnblogs.com/purple910/p/16420711.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有