Do not mutate vuex store state outside mutation handlers

1.父组件的data里面写了一个list
2.通过弹窗把这个list传过去
3.点击弹窗内的一个按钮 this.$emit("on-status",index)传方法给父组件
4.在onStatus()这个方法下,修改父组件list[index]的某个值报了这个错误

阅读 11.1k
3 个回答

既然你用了Vuex,那么更改 Vuex 的 store 中的状态的唯一方法是提交 mutation$emit是不用vuex的情况下父子组件通讯使用的

把文档多看一看https://vuex.vuejs.org/zh-cn/...

你看下是不是开启了严格模式!

开启严格模式,仅需在创建 store 的时候传入 strict: true:

const store = new Vuex.Store({
// ...
strict: true
})
在严格模式下,无论何时发生了状态变更且不是由 mutation 函数引起的,将会抛出错误。这能保证所有的状态变更都能被调试工具跟踪到。

使用了 _.clone(obj)也报这个错误,直接使用 JSON.parse(JSON.stringify()) 可以的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题