将Redux状态传递给组件时的最佳实践

时间:2017-05-31 08:30:56

标签: javascript reactjs redux

我正与其他几位开发人员合作开展React + Redux项目,我们无法就如何通过州和行动的最佳做法达成一致。

我的方法是拥有一个容器'或者'提供商'组件,即父组件,所有必需的状态和操作都映射到状态并传递给子组件,从而创建单一的事实来源。然而,缺点是,你必须记住在每个子组件中传递操作和值,这可能很难遵循。

另一种开发人员的方法是在需要它的每个组件上,在堆栈中的任何位置使用mapStateToProps。因此,如果三个或四个级别的子组件需要某个状态,他将在该组件上使用mapStateToProps。他还会使用import关键字直接导入动作创建者,而不是将其称为道具。我不喜欢这种方法,因为您可能会多次注入状态,并且无法在一个地方快速切换您的状态或操作。

我可以看到这两种方法都有它们的优点和后备,所以我只是想知道是否有一个明确的最佳实践,在何时何地将状态/动作注入到一堆React组件中。

2 个答案:

答案 0 :(得分:6)

我处理了一个相对较大的Redux代码库,我们选择的方法和我喜欢的方法是在容器组件上使用mapStateToProps的第二种方法,该组件分派操作并将渲染委托给dumb 部件

您希望能够在许多地方重复使用它们而不必传递状态。您的顶级redux状态仍然是事实的来源,但mapStateToProps将允许您仅访问此容器中所需的州的部分。

Redux文档做得非常好,检查出来,它建议容器组件实现mapStateToProps http://redux.js.org/docs/basics/UsageWithReact.html

答案 1 :(得分:0)

由您决定连接到Redux的组件数量,但一般来说,连接组件越多,性能越好。有关详情,请参阅Redux FAQ on connecting multiple components以及我的博文Practical Redux, Part 6: Connected Lists, Forms, and Performance