首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确使用axios.interceptor?

如何正确使用axios.interceptor?
EN

Stack Overflow用户
提问于 2017-08-12 09:34:43
回答 1查看 4.3K关注 0票数 1

我使用vue-cli,这是我的main.js.In Vue的单一文件组件结构的一部分,我使用axios代替ajax。

代码语言:javascript
复制
import Vue from 'vue'
import App from './App'
import axios from 'axios'
import VueAxios from 'vue-axios'
Vue.use(VueAxios, axios)
Vue.config.productionTip = false

new Vue({
  el: '#app',
  template: '<App/>',
  components: { App }
})

它通过参考(this.axios)使axios在每个证监会中都可用。但是当我尝试使用axios.interceptor时,我遇到了一个恼人的问题。我想为整个项目设置axios.interceptor.request和axios.interceptor.reponse。但是,我只能在一个文件组件中使用this.axios.interceptor.request,而且它只能在这个文件中工作。这是App.js的零件代码。

代码语言:javascript
复制
  methods: {
    // interceptor
    setAxiosInterceptor () {
      this.axios.interceptors.request.use(config => {
        this.cover = true
        return config
      }, error => Promise.reject(error)
      )
      this.axios.interceptors.response.use(response => {
        this.cover = false
        return response
      }, error => {
        this.cover = false
        return Promise.reject(error)
      })
    },

我必须在每个证监会中设置this.axios.interceptor。因此,我如何为整个项目设置axios.interceptor,并使其在每个证监会中都可用。

EN

回答 1

Stack Overflow用户

发布于 2018-06-12 13:04:06

在Vue组件中,创建方法setAxiosInterceptor()的作用域是该组件的本地范围。根组件方法可以使用vm.$root别名公开给子组件。

在这种情况下,更好的方法不是创建方法setAxiosInterceptor(),而是使用Vue组件created: lifecycle hook

将axios.interceptor.request和axios.interceptor.reponse全局调整为App.vue的步骤

代码语言:javascript
复制
<script>
import axios from "axios";
export default {
    ...

    methods: {},
    created: function () {

    axios.interceptors.request.use(config => {
        this.cover = true
        return config
      }, error => Promise.reject(error)
      )
      axios.interceptors.response.use(response => {
        this.cover = false
        return response
      }, error => {
        this.cover = false
        return Promise.reject(error)
      })
    }

    ...
};
</script>

main.js中的以下代码行不是实现此特定结果所必需的。

代码语言:javascript
复制
import VueAxios from 'vue-axios'
Vue.use(VueAxios, axios)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45645714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档