页面布局在哪里适合反应(redux)展示与容器模式?
Where do page layouts fit into the react (redux) presentational vs container pattern?
我读过 Dan Abramov 关于 Presentational and Container Components 的文章。在其中,他解释了一种模式,在该模式中,您将组件分为处理 事物外观 的组件和处理 事物运作方式 .[=16= 的组件]
我正在尝试根据此架构构建我的 React 应用程序,但遇到了 运行 问题。假设我有一个页面 UserProfile
。它包含一组表示组件,并且需要各种数据源。我需要定义此页面的外观,我称之为 UserProfile
.
作为演示组件的页面
然后我是否将 UserProfile
组件构建为展示组件,并通过将每个展示组件包装在适当的容器中来连接所有数据源?
<UserProfile> // presentational
<AvatarData> // container
<Avatar /> // presentational
</AvatarData>
<CommentData> // container
<Comments /> // presentational
</CommentData>
</UserProfile>
因为这不允许单个组件有多个数据源,并且它会导致您的容器代码变得相当重复。
作为容器组件的页面
或者,In the real-world example 在 redux repo 中使用了不同的方法,其中容器还定义了布局(虽然相当简约)。这允许您在一个地方定义页面所需的所有数据源,并允许您为单个组件使用多个数据源。但是,在此组件中定义样式是一个禁忌,如果您的页面非常简约,这会起作用,但如果变得更复杂,就会分崩离析。
所以我的问题是:使用这种模式时应该如何定义复杂的页面(包括样式、数据和行为)?
不要过度考虑 "container" 和 "presentational" 方面。这是一个有用的区别,但没有硬性规定必须 以绝对严格的方式分解组件。在容器组件中放置一些布局和展示渲染完全没问题,在展示组件中渲染容器组件也完全没问题。
我读过 Dan Abramov 关于 Presentational and Container Components 的文章。在其中,他解释了一种模式,在该模式中,您将组件分为处理 事物外观 的组件和处理 事物运作方式 .[=16= 的组件]
我正在尝试根据此架构构建我的 React 应用程序,但遇到了 运行 问题。假设我有一个页面 UserProfile
。它包含一组表示组件,并且需要各种数据源。我需要定义此页面的外观,我称之为 UserProfile
.
作为演示组件的页面
然后我是否将 UserProfile
组件构建为展示组件,并通过将每个展示组件包装在适当的容器中来连接所有数据源?
<UserProfile> // presentational
<AvatarData> // container
<Avatar /> // presentational
</AvatarData>
<CommentData> // container
<Comments /> // presentational
</CommentData>
</UserProfile>
因为这不允许单个组件有多个数据源,并且它会导致您的容器代码变得相当重复。
作为容器组件的页面
或者,In the real-world example 在 redux repo 中使用了不同的方法,其中容器还定义了布局(虽然相当简约)。这允许您在一个地方定义页面所需的所有数据源,并允许您为单个组件使用多个数据源。但是,在此组件中定义样式是一个禁忌,如果您的页面非常简约,这会起作用,但如果变得更复杂,就会分崩离析。
所以我的问题是:使用这种模式时应该如何定义复杂的页面(包括样式、数据和行为)?
不要过度考虑 "container" 和 "presentational" 方面。这是一个有用的区别,但没有硬性规定必须 以绝对严格的方式分解组件。在容器组件中放置一些布局和展示渲染完全没问题,在展示组件中渲染容器组件也完全没问题。