我知道我们不应该改变状态,因为如果引用在上一个状态和下一个状态中发生了变化,应用程序会根据这一事实重新渲染,但我会做这样的
reducerFunction = (state, action) => {
state.value = action.value;
return {...state}
}
在这里,我传递了一个新的参考,那么它有什么问题吗,可能是因为状态突变而发生的
这是可行的,但您正在更改旧状态,然后创建新状态并返回它。不建议这样做。在某些情况下,如果您需要撤消功能,这可能是一个问题。
我能想到的两个问题。
-
您会丢失(或弄乱(redux的撤消历史记录功能。这有时真的很方便,尤其是在处理大量数据时。
-
您假设代码是同步执行的。Redux(以及JS(并没有做出这样的保证。在一个应用程序中,你用任何计算机生成的东西(实际上是任何非用户输入的东西(更新商店,并稍微快速地将其读回,这会扰乱状态,你将面临种族状况。
一般来说,遵循实现指南以使代码可预测地运行是一个好主意。有时会对非标准的东西进行错误检查,因为可能会破坏代码。这可能是一个潜在的安全问题。当我编写API时,我一直在做这件事。