gpt4 book ai didi

reactjs - 如何在 Redux Toolkit reducer 中替换整个状态?

转载 作者:行者123 更新时间:2023-12-03 15:55:23 28 4
gpt4 key购买 nike

编辑:解决方案是返回 state在我完全更换它之后( return state = {...action.payload} )!但为什么?当我单独替换字段时,我不需要返回它。

我正在使用 Redux Toolkit ,这简化了一些 Redux 样板。他们做的一件事是使用 Immer 允许您直接“修改”状态(实际上,您不是)。它工作正常,除了我不知道如何完全替换我的状态部分。例如,我想做这样的事情

const reducer = createReducer({ s: '', blip: [] }, {

[postsBogus.type]: (state, action) => {
state = { ...action.payload };
}

但是 state保持不变。相反,我必须这样做
[postsBogus.type]: (state, action) => {
state.s = action.payload.s;
state.blip = action.payload.blip;
}

有没有办法可以完全替换状态?

最佳答案

是的,正如您所指出的,您必须返回一个新值才能完全替换状态。
即使在“普通”的 Redux reducer 中,分配 state = newValue什么都不做,因为所做的只是说明名为 state 的局部函数变量现在指向内存中的不同值。这对返回新值没有任何作用。
对于 Immer,you can either mutate the contents of the Proxy-wrapped state value as long as it's an object or array, or you can return an entirely new value, but not both at once .

关于reactjs - 如何在 Redux Toolkit reducer 中替换整个状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60002846/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com