javascript - Vue.js 2. 如何在axios拦截器中使用Vuex
问题描述
我有一个拦截器,我想在其中使用Vuex
getter,但是,当我导入我的时候,store
我收到了undefined
.
这是我的src/plugins/http.js
代码:
import Vue from 'vue'
import store from '../store'
import axios from 'axios'
axios.interceptors.request.use(
(config) => {
if (store.getters['auth/hasAccessToken']) {
config.headers['Authorization'] = 'Bearer ' + store.getters['auth/accessToken']
}
}
);
这是我的src/store/index.js
代码:
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex);
export default new Vuex.Store({
//...
});
import store from '../store'
也没有帮助。我已经尝试了几乎所有的导入方式,我知道。没有什么帮助。
我想念什么?
解决方案
看起来您正在使用模块来命名您的吸气剂。为了找出问题所在,为什么不先尝试在没有模块的情况下执行此操作,例如在store.getters.hasAccessToken
和...accessToken
. 如果这有效,那么可能是您正确设置了模块,特别是您可能错过namespaced: true
了模块。见:https ://vuex.vuejs.org/modules.html
不要忘记在拦截器中返回配置对象。
对于它的价值,我使用了类似的东西,它在没有模块的情况下也能正常工作。看起来像这样:
import axios from 'axios'
import store from '../store'
export default class BaseDataService {
constructor () {
this.http = axios.create({baseURL: '/api/'})
this.http.interceptors.request.use(config => {
config.headers.Authorization = 'Bearer ' + store.state.principal.token
return config
})
}
}
推荐阅读
- c++ - 快速将 int 添加到向量并清除会导致访问冲突
- ios - *Swift iOS* UIViewController PUSH View 中的容器视图
- wordpress - 有没有办法可以将地址传递给 Open Street Map
- azure-pipelines - 有没有办法在一些树状结构中安排 Azure 管道?
- amazon-web-services - AWS Elastic Beanstalk 中发生“冲突的服务器名称“localhost””和“损坏的标头”错误
- amazon-web-services - 无法使用 aws ec2 实例中的 ansible 主机从主服务器连接到客户端服务器计算机
- c# - 从 C# 读取 Nuget 包中的 .bin 文件
- r - 错误代码 100 在 r 中使用 fitdist 拟合 gamma3 分布(参数列表错误)
- java - 如何在控制台中打印通用树?
- php - Wordpress + Divi:自定义部分切换