Javascript 在Redux中的组件中放置容器可以吗?

Javascript 在Redux中的组件中放置容器可以吗?,javascript,reactjs,redux,Javascript,Reactjs,Redux,我正在使用React/Redux进行黑客攻击,并一直在构建大量容器和组件 然而,我最近遇到了一个设计选择,它使我的元素看起来像这样: 我的问题是这个设计可以吗?基本上,我正在努力将Redux操作传递到按钮,因为按钮有几层深。我可以继续将操作从HeaderContainer向下传递到组件,但是如果DOM变得更深,它只会变得越来越糟糕 我觉得这种设计是错误的,因为一个表示组件正在调用一个容器组件 有什么想法吗?您有三个选择: 首先是将按钮组件直接连接到商店,让它既是容器组件又是表示组件。简单有效

我正在使用React/Redux进行黑客攻击,并一直在构建大量容器和组件

然而,我最近遇到了一个设计选择,它使我的元素看起来像这样:

我的问题是这个设计可以吗?基本上,我正在努力将
Redux操作
传递到按钮,因为按钮有几层深。我可以继续将操作从
HeaderContainer
向下传递到组件,但是如果DOM变得更深,它只会变得越来越糟糕


我觉得这种设计是错误的,因为一个表示组件正在调用一个容器组件


有什么想法吗?

您有三个选择:

  • 首先是将按钮组件直接连接到商店,让它既是容器组件又是表示组件。简单有效

    导出默认连接(MapStateTrops、mapDispatchToProps)(按钮组件)

    参见Redux创建者的示例(第四篇文章)

  • 第二种方法是创建一个容器来包装按钮,并让按钮只是一个表象——即您当前的实现。非常好的分层架构,但在这一点上对我来说设计过度

  • 第三是将操作从
    标题组件容器
    传递到
    按钮组件


如果按钮深度不超过2级,我会选择第三个按钮,因为您已经连接了
HeaderComponentContainer
,作为家长,它有责任确定其孩子应该提供什么功能(他们只提供,对吗?)


另外,您可以使用在层次结构中任意深入地传递操作/属性,而无需对每个组件进行明确的传递。

您好,我不明白的是,为什么您首先需要连接到应用商店才能分派操作?仅当组件渲染需要侦听存储中的更改时,才应连接到存储…“presentational component正在调用容器组件”。丹·阿布拉莫夫说,如果我理解正确,我目前的实现基本上是第二个。创建容器组件以包装按钮组件。听起来不错吧?我只是想确保它是一个有效的模式。我更喜欢在我们的演示组件上使用
@connect
。看见