使用像Redux或MobX这样的状态管理库时,我还需要使用道具吗?
例如,如果父级正在向子级发送状态作为prop,那么父级和子级都不能简单地导入Redux / MobX存储并通过导入的存储调用该状态的操作吗?
答案 0 :(得分:2)
你应该总是喜欢React父子道具传递而不是将每个组件映射到Redux商店,原因如下:
React为父子道具传递提供渲染优化,Redux没有。这意味着Redux存储中的每个更改,其映射组件都需要重新渲染,从而导致性能问题。在React中,只有具有更改细节的组件才需要呈现。
您无法重用与Redux存储映射的组件,因为它们彼此紧密耦合。因此,您无法在React中完全实现可组合模式。因此,请坚持使用React方式将props传递给组件,并仅在几个关键组件中使用Redux映射。
答案 1 :(得分:1)
当您使用Redux或MobX存储应用程序状态时,您需要决定将连接哪些组件(智能)以及哪些组件将断开连接(哑巴)。
惯例是创建智能容器,负责连接到商店,更新商店中的状态和订阅状态更改。这些组件是唯一知道Redux / MobX存储的组件。
容器中有许多愚蠢的孩子,他们通常是无国籍的,主要负责应用程序的表现方面。他们不知道Redux / Mobx商店的存在,并接收任何状态更改或操作作为其父母的道具。
您可以通过@DanAbramov(Redux的创建者)更好地了解this article中容器和表示组件之间的区别。