繁体   English   中英

react-redux 中“@@INIT”操作的目的是什么?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM