无法理解为什么我的数组在我的 Reducer 中发生变异
Can't understand why the my array is mutating in my Reducer
我知道在 React 中你希望始终保持状态不可变。
也许我的登录状态和不变性存在一些缺陷。如果我错了请纠正我,但是状态对象的核心是在 reducer 中管理的,对吗?意思是,如果我想让我的 state
of users
(例如)成为一个列表......我想把它塑造成一个数组。
因此,我设置了 inititalState = []
。这就是我认为我被难住了的地方。不知道我是不是理解错了,还是没有考虑。
之前我在做,
case GET_USERS:
return [...state,
Object.assign({}, action.payload)
];
但我被建议将其更改为 return [...state, ...action.payload];
考虑到它不是我正在改变的对象或键。现在我假设,return [...state, ...action.payload];
正在用 action.payload
、 替换 state
,但根本不是这样 。
每次我尝试过滤用户...它只是 MUTATES 和 将用户对象推送 到 this.props.users
我对如何做感到困惑,因为我正在尽力遵循 Redux 文档。
发生这种情况是因为 ...state
将有您的 users
列表。在下一次调用期间,您只需将新用户追加到 state
中。相反,您应该返回 payload
.
尝试以下方法。
case GET_USERS:
return [...action.payload];
我知道在 React 中你希望始终保持状态不可变。
也许我的登录状态和不变性存在一些缺陷。如果我错了请纠正我,但是状态对象的核心是在 reducer 中管理的,对吗?意思是,如果我想让我的 state
of users
(例如)成为一个列表......我想把它塑造成一个数组。
因此,我设置了 inititalState = []
。这就是我认为我被难住了的地方。不知道我是不是理解错了,还是没有考虑。
之前我在做,
case GET_USERS:
return [...state,
Object.assign({}, action.payload)
];
但我被建议将其更改为 return [...state, ...action.payload];
考虑到它不是我正在改变的对象或键。现在我假设,return [...state, ...action.payload];
正在用 action.payload
、 替换 state
,但根本不是这样 。
每次我尝试过滤用户...它只是 MUTATES 和 将用户对象推送 到 this.props.users
我对如何做感到困惑,因为我正在尽力遵循 Redux 文档。
发生这种情况是因为 ...state
将有您的 users
列表。在下一次调用期间,您只需将新用户追加到 state
中。相反,您应该返回 payload
.
尝试以下方法。
case GET_USERS:
return [...action.payload];