我的商店中有一个RESET突变,将状态对象重置为其默认值:我找到的解决方案是Object.assign(state, defaultState)使它起作用而不是state = defaultState。=在特定属性上影响起作用,但对整个状态对象无效。
工作:
RESET: (state) => {
Object.assign(state, defaultState);
}
Run Code Online (Sandbox Code Playgroud)
不工作:
RESET: (state) => {
state = defaultState;
}
Run Code Online (Sandbox Code Playgroud)
这是由于js的工作方式。当您使用=它设置一个新对象时,它是一个在内存中具有新地址的全新对象,因此vuex不再知道如何跟踪它。
使用时Object.assign(state, defaultState);,它实际上保留了相同的对象,并且只是将属性设置为新值。