2016-04-21 28 views
5

https://medium.com/@dan_abramov/smart-and-dumb-components-7ca2f9a7c7d0#.i63w9pvzw反应。如果演示组件包含容器组件,那么它不好吗?

表象成分:

  • 可以包含表象和容器组件**内,通常有一些DOM的标记和样式自己的。
  • 对应用程序的其他部分没有依赖关系,例如Flux操作或商店。

我想,如果表象成分中含有容器组件,他们将获得依赖于流量或终极版(或其他容器组件所依赖的)。

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

+0

有问题吗? – aet

+0

@aet我不知道包含容器组件的表示组件是否不好? –

+2

够公平的。答案不是直截了当的。有人可能会争辩说,构建应用程序会更好,因此您不需要嵌套容器组件。例如,对于redux,没有什么能阻止你将整个状态对象作为道具传递给每个组件(这是一种常见模式),从而消除了对这些容器进一步向下的需求。但是,也许你有一个非常好的理由这样做,比如如果一个子组件需要状态,并且该状态恰好是一个大对象,并且如果它传递给每个人,性能可能会受到影响。 – aet

回答

2

这不坏,它是完美的。 react-redux的全部要点是让您直接将容器组件直接连接到商店,而不必将每个组件的整个商店作为道具传递。组件重用不是问题,因为<Provider>组件将使任何连接的容器组件在其下的任何位置工作。

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

至于测试包含容器组件的表示组件,它不会是一个问题。浅色渲染在测试中仍然可以正常工作(除非您碰到this issue)。如果您需要在测试中安装组件,您可以随时将其包装在具有专门用于该测试的商店的<Provider>组件中。

编辑:此答案是特定于Redux with react-redux。其他Flux实现可能会遇到一些困难,我不知道这一点。

相关问题