[英]What is the purpose of the "@@INIT" action in react-redux?
只是注意到它总是在打开页面时调度的第一个操作。 它是否用于使用 reducer 的默认状态初始化 store?
我想这会回答你的问题。
// When a store is created, an "INIT" action is dispatched so that every // reducer returns their initial state. This effectively populates // the initial state tree. dispatch({ type: ActionTypes.INIT })
2020 年 2 月 24 日更新
由于@IsaacLyman 明确询问了这一点并在评论中获得了一些赞成票,因此我决定进行更新以解决该问题。 为了澄清,有问题的源代码如下:
const ActionTypes = {
INIT: `@@redux/INIT${/* #__PURE__ */ randomString()}`,
...
}
"randomString" 最初是在v4.0.0-beta.1 中引入的,在下面的提交中,您可以看到实际的更改(并阅读作者的简短评论)。 尽管如此,我还是在这里找到了 Dan Abramov 的“官方声明”,其中指出:
“...任何以
@@
为前缀的操作都不会被处理。例如,你不应该尝试处理@@INIT
。我们可能会通过稍微随机化名称(例如@@INIT_2hj3jh34
)来强制这样@@INIT_2hj3jh34
。手动处理
@@INIT
会破坏热重载。 它会在每次热重载时调用,因此如果您在那里进行初始数据转换,第二次将无法工作。”
因此,它实际上并不打算让随机字符串可见。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.