什么时候应该将组件连接到redux?

And*_*rew 2 reactjs react-redux

例如,我具有这样的组件结构:

<Parent>
      <Child_1>
            <InnerChild_1 />
      </Chidl_1>
      <Child_2>
            <InnerChild_2 />
      </Chidl_2>
</Parent>
Run Code Online (Sandbox Code Playgroud)

<Parent>连接到Redux的组件。有什么更好的方式来更新<InnerChild_1 />与应用程序的状态,从发送这个数据<Parent>props 或连接<InnerChild_1 />到终极版?如果连接,我应该将使用状态的所有组件都连接到redux吗?

Cha*_*own 5

尽管所有其他答案都表明您应该达到connect最高水平,但这确实是一个旧建议,仅对非常简单的应用程序有用。

connect在需要使组件与Redux存储保持同步的任何地方使用。在您的示例中,如果<Parent />不使用任何状态,并且其作用仅是组成状态,那么我将不会连接该状态。我将让Parent成为标准的React组件,并单独连接子项。

对于大型列表或带有嵌套实体的复杂数据结构,这是要走的路。

如果选择其他方式,并连接到最顶层的组件,则任何状态更改都将导致完全重新渲染组件树,而不会进行自动优化。由于connected组件将为shouldComponentUpdate您实现,因此通常可以将多个项目连接到商店而获得更好的性能,而不是连接“列表”父项并在每次更改时重新呈现每个项目。

请参阅Redux文档中的React-Redux常见问题解答:http : //redux.js.org/docs/faq/ReactRedux.html#react-multiple-components

特别:

早期的Redux文档建议您在组件树顶部附近仅应连接几个组件。但是,时间和经验表明,通常这需要几个组件对所有后代的数据要求了解太多,并迫使他们传递数量混乱的道具。

  • 我已经使用 react-redux 大约 2 年了。我一直在使用智能 vs 转储组件方法,其中只有“智能”容器组件会连接到存储更改并将状态作为属性传递。我的结论是,这种模式在以下几个方面已经过时且有害: 1. 它在组件树中引入了大量嵌套组件依赖项 2. 它通过确定整个树在状态更改时重新渲染来影响性能 3. 将代码变成意大利面条式沿树链传递许多中间组件不需要的属性。 (2认同)