我之前是这么使用的:

this.form = this.$store.state.common.searchFormData;

form是检索表单,每次进入页面从vuex中取出进行初始化,但是在搜索表单中进行修改时,控制台报错,即[vuex] Do not mutate vuex store state outside mutation handlers.

报错原因:更改 Vuex 的 store 中的状态的唯一方法是提交 mutation,这是官网原话。意思是state中的值必须在回调函中更改,而我们上边的赋值其实是深度赋值,表单中的值改变会触发vuex中state的值变化,所以才会报此错误。

解决方案:

1、传入的参数进行处理,即使用

 
this.form=Object.assign({},this.$store.state.common.searchFormData);

进行对象的浅拷贝,这样就不会触发vuex中state的值。

2、报以上错误是因为开启了严格模式、即strict:true了,所以你可以把这个关闭false即可。

注意:生产环境中必须设置strict:false

strict
strict


Logo

前往低代码交流专区

更多推荐