如何在 store/index.js 中访问导出外的状态?
How to access state outside export in store/index.js?
我在我的商店操作中使用 Axios,并希望根据某些状态设置 Axios header(以更改接受语言的请求 header)。尝试访问导出之外的商店时,出现错误“找不到 属性 未定义状态”。我的 store/index.js
文件:
import Vue from "vue";
import Vuex, { Store } from "vuex";
import Axios from "axios";
Vue.use(Vuex);
Axios.defaults.headers['Accept-Language'] = store.state.Lang
const store = new Vuex.Store({
state: {
Lang: "en",
ApiConf: [],
Token: null,
Session: null,
}
...
}
export default store
如何在定义商店的同一文件中访问商店和状态?或者您将如何在不进入商店并为每个操作定义的情况下实施此 state-dependent Axios header?
您的代码的问题在于您在声明变量之前访问了 store
变量,因此出现了错误。
移行:
Axios.defaults.headers['Accept-Language'] = store.state.Lang
导出语句上方:
import Vue from "vue";
import Vuex, { Store } from "vuex";
import Axios from "axios";
Vue.use(Vuex);
const store = new Vuex.Store({
state: {
Lang: "en",
ApiConf: [],
Token: null,
Session: null,
}
...
}
Axios.defaults.headers['Accept-Language'] = store.state.Lang
export default store
store
在访问时未定义。 Vuex store 通常在单独的模块中定义,因此它已经在导入它的模块中可用并且不会导致竞争条件。
另一个问题是Axios.defaults.headers
赋值一次存储值后,反应性无法保留,Accept-Language
将永远是初始值,除非在请求headers中指定。
这应该在 Axios 拦截器中完成:
Axios.interceptors.request.use(config => {
config.headers['Accept-Language'] = store.state.Lang;
return config;
});
我在我的商店操作中使用 Axios,并希望根据某些状态设置 Axios header(以更改接受语言的请求 header)。尝试访问导出之外的商店时,出现错误“找不到 属性 未定义状态”。我的 store/index.js
文件:
import Vue from "vue";
import Vuex, { Store } from "vuex";
import Axios from "axios";
Vue.use(Vuex);
Axios.defaults.headers['Accept-Language'] = store.state.Lang
const store = new Vuex.Store({
state: {
Lang: "en",
ApiConf: [],
Token: null,
Session: null,
}
...
}
export default store
如何在定义商店的同一文件中访问商店和状态?或者您将如何在不进入商店并为每个操作定义的情况下实施此 state-dependent Axios header?
您的代码的问题在于您在声明变量之前访问了 store
变量,因此出现了错误。
移行:
Axios.defaults.headers['Accept-Language'] = store.state.Lang
导出语句上方:
import Vue from "vue";
import Vuex, { Store } from "vuex";
import Axios from "axios";
Vue.use(Vuex);
const store = new Vuex.Store({
state: {
Lang: "en",
ApiConf: [],
Token: null,
Session: null,
}
...
}
Axios.defaults.headers['Accept-Language'] = store.state.Lang
export default store
store
在访问时未定义。 Vuex store 通常在单独的模块中定义,因此它已经在导入它的模块中可用并且不会导致竞争条件。
另一个问题是Axios.defaults.headers
赋值一次存储值后,反应性无法保留,Accept-Language
将永远是初始值,除非在请求headers中指定。
这应该在 Axios 拦截器中完成:
Axios.interceptors.request.use(config => {
config.headers['Accept-Language'] = store.state.Lang;
return config;
});