Vuex 突变引发错误 - 不要在突变处理程序之外改变 vuex 存储状态

Posted

技术标签:

【中文标题】Vuex 突变引发错误 - 不要在突变处理程序之外改变 vuex 存储状态【英文标题】:Vuex mutation throws an error - do not mutate vuex store state outside mutation handlers 【发布时间】:2021-11-30 13:58:34 【问题描述】:

我有一个 Vuex 存储对象,它有一个突变。

SET_FILTERS_CATEGORIES(state, payload) 
    state.filters.categories = payload;
,

SET_FILTERS_CATEGORIES(state, payload) 
    // state.filters.categories = payload;  // This "works"
,

这个突变给我一个错误:

不要在突变处理程序之外改变 vuex 存储状态

如果我评论了这一行,它“有效”。我不明白有什么问题。它在突变部分内。

【问题讨论】:

你能分享你调用突变的 Vue 组件吗? 它有 1800 行。这是引发错误的代码。 @Čamo 你怎么称呼突变?这就是我们正在寻找的代码。 从存储操作中调用突变。 请展示一些相关的具体代码。仅此,我们无法为您提供帮助。另外,您是否在任何地方查找过这个问题?这可能是一个很好的起点:***.com/q/46044276/8816585 【参考方案1】:

您必须仅在 action 方法中调用您的 mutation

代码示例

const mutations = 
  SET_FILTERS_CATEGORIES(state, payload) 
      state.filters.categories = payload;
  ,


const actions = 
  getFiltersCategories (commit, payload)
    commit('SET_FILTERS_CATEGORIES', payload)
  

【讨论】:

是的,我是这样做的。但是它会引发错误。 它会抛出同样的错误吗?让我看看你在代码中调用 SET_FILTERS_CATEGORIES 的位置 我在操作部分调用它。它有一个动作。 我能看到你的代码吗?

以上是关于Vuex 突变引发错误 - 不要在突变处理程序之外改变 vuex 存储状态的主要内容,如果未能解决你的问题,请参考以下文章

vuex 错误 - 不要在突变处理程序之外改变 vuex 存储状态

nuxt vuex:不要在突变处理程序之外改变 vuex 存储状态

错误:[vuex] 不要在突变处理程序之外改变 vuex 存储状态。 NUXT

Vuex - '不要在突变处理程序之外改变 vuex 存储状态'

在 nuxt 中出现此错误:[vuex] 不要在突变处理程序之外改变 vuex 存储状态

Vuex 和 VueJS(不要在突变处理程序之外改变 vuex 存储状态)