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

问题描述 投票:3回答:1

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

工作:

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

不工作:

RESET: (state) => {
  state = defaultState;
}
vuex
1个回答
4
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.