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