vue.js - 如何访问 store/index.js 中导出之外的状态?

标签 vue.js vuejs2 axios vuex

我在商店操作中使用 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

如何在定义存储的同一文件中访问存储和状态?或者,您将如何实现这个依赖于状态的 Axios header ,而无需进入商店并为每个操作进行定义?

最佳答案

store 在访问时尚未定义。 Vuex 存储通常在单独的模块中定义,因此它已经在导入它的模块中可用,并且不会导致竞争条件。

另一个问题是,当Axios.defaults.headers被分配一次存储值时,无法保留 react 性,Accept-Language将始终是初始值,除非它是在请求 header 中指定。

这应该在 Axios 拦截器中完成:

Axios.interceptors.request.use(config => {
  config.headers['Accept-Language'] = store.state.Lang;
  return config;
});

关于vue.js - 如何访问 store/index.js 中导出之外的状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68306657/

相关文章:

vue.js - Vuejs,具有可编辑字段和双向数据绑定(bind)的动态 b 表

reactjs - Axios GET 请求表单编码数据

javascript - Vue,将值放入数组的条件

javascript - Adsense 将样式标签注入(inject)我的页面(在 chrome 中)

javascript - 如何更改根组件中的数据?

node.js - 设置 axios 默认值时未获取身份验证 header

javascript - 在 Node 中限制 API AJAX 请求(速率受到限制) - 使用 AXIOS 进行 AJAX 调用...

javascript - 如何在 Vue 中从 graphql 数据集创建动态过滤?

javascript - 在Vuejs中动态切换flex大小?

javascript - 使用 Vue 2.0 的 Sortable.js 排序不正确