reactjs - react 。如果展示组件包含容器组件会不会很糟糕?

标签 reactjs redux flux

根据https://medium.com/@dan_abramov/smart-and-dumb-components-7ca2f9a7c7d0#.i63w9pvzw

Presentational components:

  • May contain both presentational and container components** inside, and usually have some DOM markup and styles of their own.
  • Have no dependencies on the rest of the app, such as Flux actions or stores.

我认为如果展示组件包含容器组件,它们将依赖于 Flux 或 Redux(或容器组件所依赖的任何组件)。

这将使演示组件难以测试和重用。

最佳答案

还不错,完全没问题。整点react-redux是让您将容器组件直接连接到商店,而不必将整个商店作为 Prop 传递给每个组件。组件重用不是问题,因为 <Provider>组件将使任何连接的容器组件在其下方的任何位置工作。

测试容器组件实际上也不难。您可以将连接的组件设置为默认导出,还可以将未连接的组件导出为命名导出,您可以将其用于测试,并在这些测试中手动传递它的属性。请参阅 'Writing Tests' part of the Redux docs 的“连接的组件”部分了解更多信息。

对于测试包含容器组件的表现组件,这不会是问题。浅渲染在测试中仍然可以正常工作(除非您遇到 this issue )。如果您需要在测试中安装该组件,您可以随时将其包装在 <Provider> 中。具有特定于该测试的存储的组件。

编辑:这个答案特定于带有react-redux的Redux。其他 Flux 实现可能会遇到一些我不知道的困难。

关于reactjs - react 。如果展示组件包含容器组件会不会很糟糕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36781085/

相关文章:

javascript - React JavaScript 是否支持 jQuery?

javascript - 在 Redux 中,将数据发布到服务器的最佳方式是什么?

javascript - React/Redux - 组件状态未更新

javascript - 从一个存储切片调用另一个存储切片中的一个 redux 操作

javascript - Flux:异步操作成功时的编程转换

javascript - Redux-React 通过 mapDispatchToProps 方法传递对象

javascript - 如何在按钮中触发 mapDispatchToProps 操作?

javascript - 使用 react-router v4 进行路由的问题

typo3 - 从插件配置中删除默认的 pi Flexform 字段 -typo3

reactjs - 如何在axios中取消/中止ajax请求