redux中的旧状态在分派操作时会发生什么情况,从而导致新状态

redux中的旧状态在分派操作时会发生什么情况,从而导致新状态,redux,Redux,在Redux中,一旦我们分派了一个动作,我们就会得到一个带有更新值的新状态。以前的旧状态会发生什么变化?旧状态将被丢弃。如果你想保存它,你需要把它作为你所在州的一部分。这里解释了一种方法: 另一种选择是使用“事件来源”模型。其中,主状态只是已发生的所有操作的数组,而派生状态将主状态中的数组减少为“当前应用程序状态”。以下是对Elm思想的解释:Redux状态只不过是内存中的javascript对象。状态只有一个版本,这是您的最新版本 当您分派一个动作时,动作处理程序(reducer)是一个纯函数,

在Redux中,一旦我们分派了一个动作,我们就会得到一个带有更新值的新状态。以前的旧状态会发生什么变化?

旧状态将被丢弃。如果你想保存它,你需要把它作为你所在州的一部分。这里解释了一种方法:


另一种选择是使用“事件来源”模型。其中,主状态只是已发生的所有操作的数组,而派生状态将主状态中的数组减少为“当前应用程序状态”。以下是对Elm思想的解释:

Redux状态只不过是内存中的javascript对象。状态只有一个版本,这是您的最新版本

当您分派一个动作时,动作处理程序(reducer)是一个纯函数,它将把您的旧状态转换为新状态。状态应该是不可变的,这意味着操作处理程序不会更改旧状态,而是获取它的副本,然后根据您的操作类型进行更改,然后返回它。它看起来像(“-->”表示分派):

您可以安装redux,您将看到该州的整个历史

所以基本上,redux不保存任何旧状态,如果您想跟踪历史,您必须使用
Stack
或其他一些lib来自己完成。
实际上,我使用数据结构
stack
实现事件跟踪,当状态发生变化时,您
推送
到stack,当您想返回到以前的状态时,您只需
弹出
状态并分派一个特殊动作来更改状态,这个特殊分派不应该触发
推送
,这个想法很粗略。

它不是在reducer中被覆盖了吗?否,reducer是一个纯函数,不会覆盖任何内容。好的,它创建了一个新的对象/数组/项
initial state ---> state 1 ---> state 2 ---> state 3 ....