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

时间:2016-12-06 08:22:54

标签: javascript reactjs redux

我正在使用React / Redux进行攻击并且已经构建了大量容器和组件。

但是我最近遇到了一个设计选择,我选择的元素看起来像这样:

enter image description here

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

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

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您有三种选择:

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

    export default connect(mapStateToProps, mapDispatchToProps)(ButtonComponent)

    查看Redux here(第4篇文章)的创建者的示例

  • 其次是创建一个容器来包装按钮,让按钮只是表示 - 你当前的实现。非常好的分层架构,但对我来说过度工程。

  • 第三是将操作从HeaderComponentContainer传递到ButtonComponent

如果按钮的深度不超过2级,我会选择第三个,因为您已经连接了HeaderComponentContainer,作为父母,它有责任确定其子女应该提供的功能(仅限于现在,对吗?)。

PS。您可以使用React's context在层次结构中任意深入传递操作/属性,而无需为每个组件明确地执行操作/属性。