我是新手做出反应和减少。我有一个场景,其中有这样的嵌套组件。
A> B> C> d
A组件中使用了一个属性,它将用于D组件。所以,我有两种方法:
什么是正确的方法?
答案 0 :(得分:24)
作为丹·阿布拉莫夫,redux的作者在此 issue
中说将道具传递给儿童或连接它们的两种方法 到商店是合适的,但嵌套
connect()
组件实际上会为您提供更多性能。该 缺点是它们与应用程序的关联程度稍微高一些 稍微难以测试,但这可能不是一个大问题。
他还提出了一个很好的经验法则,可以跟随 reddit
我是这样做的:
- 首先使用一个容器和几个表示组件
- 随着表现构件树的增长,“中间”组件开始传递过多的道具
- 此时,我将一些叶子组件包装到容器中,以便“中间”组件不需要接受并传递道具 与他们完全无关的
- 重复
他甚至 tweeted :
尝试将您的演示文稿组件分开。创建容器 组件通过在方便的时候连接它们。无论何时你觉得你在父组件中复制代码来为同类儿童提供数据,都需要时间来提取容器。
所以用简单的话说:
您可以在任何级别使用connect()
。这样做会使组件变得聪明,因为它知道它的道具来自何处。一个愚蠢的组件只有道具,它们可以来自任何地方。智能组件与redux耦合;一个愚蠢的组成部分不是。
答案 1 :(得分:1)
我建议如果你已经在你的app中使用了redux,那么在redux商店中设置属性并在组件D中获取它。
但是,如果工作流程非常简单,并且每个视图都从单个源获取所有数据,则可以避免使用redux,因为它适用于复杂的状态管理。