反应.如果演示组件包含容器组件,这是不是很糟糕?

Hoa*_*iep 6 flux reactjs redux

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

演讲内容:

  • 可以在里面包含表示和容器组件**,并且通常有一些自己的DOM标记和样式.
  • 不依赖于应用程序的其余部分,例如Flux操作或商店.

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

这将使表示组件难以测试和重用.

Sha*_*ere 4

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

实际上测试容器组件也不难。您可以将连接的组件设置为默认导出,还可以将未连接的组件导出为命名导出,您可以将其用于测试,并在这些测试中手动传递它的属性。有关更多信息,请参阅Redux 文档“编写测试”部分的“连接组件”部分。

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

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