调用action,action调用mutation修改state的值,
let abc = store.state.xxx
abc.def = false
store.dispatch('setModalHidden')
报错:
Error: [vuex] do not mutate vuex store state outside mutation handlers.
原因
vue文件中有从state内获取的数据 直接赋值(浅拷贝),并且有直接修改
这一步是报错的原因,跟store.dispatch('setModalHidden')没有关系
abc.def = false
解决(深拷贝)
let abc = JSON.parse(JSON.stringify(store.state.xxx))
=>深浅拷贝
实在不是在mutation外赋值却报了这个错的话,
还有一种一劳永逸但是不太安全的办法
在返回store的时候,添加参数 strict: false, (仅在确认没有在mutation外操作值的情况建议使用)
export default {
strict: false, // 严格模式,是否能在mutation外修改state值,true → 不能修改,false → 可以修改
actions,
getters,
state,
mutations
}