我不太了解Dan Abramov's 2019 comment in his article Container vs Presentational component。
是的,我们仍然应该使组件为Presentational组件,以便我们可以重复使用它们吗?如果我们开始制作具有应用程序状态的组件,则无法轻松重用此组件,因为在同一页面上拥有两个这样的组件将使它们彼此干扰。
因此,组件可以具有状态,但只能是“组件状态”,例如注释框是否已展开,甚至注释框中的当前文本,等等。它不应与状态中的特定状态紧密结合该应用程序。因此,除非确定整个应用程序中是否存在单个组件,否则我们无法真正重用此组件,这意味着不会重复使用。
因此,这真的意味着我们应该编写我们的组件以使其可重复使用,并让其他组件作为“道具”传递到App数据中吗?这样,我们可以仅通过从外部容器传入不同的道具(和调度)来重用我们的组件。
因此,对于我们的可重用组件,无论是容器,演示组件还是组合组件,都没有关系,只要更高的容器可以通过它传递道具并让我们重新使用该组件。那真的是丹的意思吗?
恕我直言,此声明是更多关于biznes逻辑的粒度和分离的信息 ...容器通常使用一些表示组件来管理某些app specific数据集。
当然容器组件可以重用。 F.e.只要我们的后端使用相同的(共享的)架构(由微服务/联盟组成),用户关注者列表就可以使用通用的Apollo客户端(graphql)。可以在不同的应用程序中自由使用它,并且通过使用渲染道具,我们可以更改其外观/行为。
一般而言,这与可重用性有关,对于状态(表示性)和本地管理的状态组件(类或功能)来说,它要容易得多。