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