Redux:我可以在reducer中改变状态并传递相同的新对象吗



我知道我们不应该改变状态,因为如果引用在上一个状态和下一个状态中发生了变化,应用程序会根据这一事实重新渲染,但我会做这样的

reducerFunction = (state, action) => {
state.value = action.value;
return {...state}
}

在这里,我传递了一个新的参考,那么它有什么问题吗,可能是因为状态突变而发生的

这是可行的,但您正在更改旧状态,然后创建新状态并返回它。不建议这样做。在某些情况下,如果您需要撤消功能,这可能是一个问题。

我能想到的两个问题。

  1. 您会丢失(或弄乱(redux的撤消历史记录功能。这有时真的很方便,尤其是在处理大量数据时。

  2. 您假设代码是同步执行的。Redux(以及JS(并没有做出这样的保证。在一个应用程序中,你用任何计算机生成的东西(实际上是任何非用户输入的东西(更新商店,并稍微快速地将其读回,这会扰乱状态,你将面临种族状况。

一般来说,遵循实现指南以使代码可预测地运行是一个好主意。有时会对非标准的东西进行错误检查,因为可能会破坏代码。这可能是一个潜在的安全问题。当我编写API时,我一直在做这件事。

相关内容

  • 没有找到相关文章

最新更新