VUEX:为什么我们不能影响整个国家对象?

时间:2017-12-18 14:57:11

标签: vuex

我的商店中有一个RESET突变,它将状态对象重置为默认值:我找到的解决方案是Object.assign(state, defaultState)使其工作而不是state = defaultState。影响特定属性的=但不适用于整个状态对象。

工作:

RESET: (state) => {
  Object.assign(state, defaultState);
}

不要工作:

RESET: (state) => {
  state = defaultState;
}

1 个答案:

答案 0 :(得分:4)

这是由于js的工作方式。当您使用=设置新对象时,它是一个在内存中有新地址的全新对象,因此vuex不再知道如何跟踪它。

使用Object.assign(state, defaultState);时,它基本上保留了相同的对象,只是将属性设置为新值。