【发布时间】:2017-11-25 02:28:30
【问题描述】:
我正在使用 Vue CLI 为 Axios 加载实例属性。我添加了几个拦截器,我希望能够在 Vue 组件内部使用 Axios 实例时关闭它们。
在文档中 Axios 建议您只标记拦截器,然后 eject 稍后通过名称。
var myInterceptor = axios.interceptors.request.use(function () {/*...*/});
axios.interceptors.request.eject(myInterceptor);
所以我遇到的问题是,我不知道我可以为谁命名我的拦截器以在组件中使用。
这是我的设置:
api-client.js
import axios from 'axios'
var client = axios.create({
baseURL: process.env.API_DOMAIN,
headers: { Accept: 'application/json' }
})
var unauthorizedInterceptor = client.interceptors.response.use(function (response) {
return response
}, function (error) {
...
return Promise.reject(error)
})
export default client
main.js
import Vue from 'vue'
import apiClient from './api-client'
Vue.prototype.$apiClient = apiClient
new Vue({
el: '#app',
...
})
component.js
<template>
...
</template>
<script>
export default {
data () {
return {
username: null,
email: null,
firstName: null,
lastName: null
}
},
methods: {
updateAccount () {
var self = this
var data = {
username: this.username,
email: this.email,
first_name: this.firstName,
last_name: this.lastName
}
self.$apiClient`enter code here`.interceptors.request.eject(unauthorizedInterceptor) // Remove interceptor here.
self.$apiClient.patch('/me')
.then(function () {
...
})
.catch(function () {
...
})
}
}
}
</script>
如何命名拦截器以在组件级别将其弹出?
【问题讨论】:
标签: javascript vue.js components interceptor axios