【发布时间】:2020-09-20 22:25:20
【问题描述】:
我想从拦截器中触发突变。在这种情况下,只要 Axios 遇到 http 403,就触发 logout 突变。
我导入了 Vuex 突变并按照我在其他地方所做的映射,但我无法在 Axios 拦截器错误函数中访问它。我在 App.vue 的 created() 方法中添加了我的拦截器配置。
我尝试了这两个问题的语法但没有成功,很可能是因为我的项目使用了模块,并且 Axios 配置位于 created() 方法中。
- https://www.reddit.com/r/vuejs/comments/eq5eej/question_how_to_access_vuex_store_modules_mode_in/ 这是最佳实践吗?
- Can't access Vuex storage mutation inside Axios interceptor
App.vue
<script>
import { mapMutations } from "vuex";
import axios from 'axios';
export default {
methods: {
...mapMutations(["logout"])
},
created(){
axios.interceptors.response.use(
function (response) {
return response;
},
function (error) {
if (error.response.status === 403) {
this.logout()
.then(() => {
this.$router.push("/");
})
}
});
}
}
</script>
【问题讨论】:
-
您在控制台中看到任何错误吗?此外,您可能希望使用箭头函数作为
this的拦截器回调来引用 Vue 实例。
标签: javascript vue.js axios vuex