使用Connect或将数据作为道具传递给子项

mar*_*hid 11 reactjs redux react-redux

我是新来的反应和减少.我有一个场景,其中有这样的嵌套组件.

A> B> C> D.

A组件中使用了一个属性,它将用于D组件.所以,我有两种方法:

  1. 从组件A中的redux store获取状态,然后将其作为props传递给它的所有子组件,即使它只在D组件中使用.
  2. 我应该连接到组件D中的redux store并从那里获取该属性.

什么是正确的方法?

Shu*_*tri 25

正如redux的作者Dan Abramov在本期杂志中所说

将props传递给子节点或将它们连接到存储的两种方法都是合适的,但是嵌套connect() 组件实际上会为您提供更多性能.缺点是它们与应用程序的耦合稍微多一些,并且稍微难以测试,但这可能不是一个大问题.

他还提出了一个很好的经验法则来遵循reddit

我是这样做的:

  • 首先使用一个容器和几个表示组件
  • 随着表示组件树的增长,"中间"组件开始传递过多的支持
  • 此时,我将一些叶子组件包装到容器中,以便"中间"组件不需要接受并传递与它们完全无关的道具
  • 重复

他甚至在推特上写道:

尽量将您的演示文稿组件分开.通过在方便的时候连接它们来创建容器组件.无论何时你觉得你在父组件中复制代码来为同类孩子提供数据,都需要时间来提取容器.

所以简单来说:

您可以connect()在任何级别使用.这样做会使组件变得聪明,因为它知道它的道具来自何处.一个愚蠢的组件只有道具,它们可以来自任何地方.智能组件与redux耦合; 一个愚蠢的组成部分不是.