我正与其他几位开发人员合作开展React + Redux项目,我们无法就如何通过州和行动的最佳做法达成一致。
我的方法是拥有一个容器'或者'提供商'组件,即父组件,所有必需的状态和操作都映射到状态并传递给子组件,从而创建单一的事实来源。然而,缺点是,你必须记住在每个子组件中传递操作和值,这可能很难遵循。
另一种开发人员的方法是在需要它的每个组件上,在堆栈中的任何位置使用mapStateToProps
。因此,如果三个或四个级别的子组件需要某个状态,他将在该组件上使用mapStateToProps。他还会使用import
关键字直接导入动作创建者,而不是将其称为道具。我不喜欢这种方法,因为您可能会多次注入状态,并且无法在一个地方快速切换您的状态或操作。
我可以看到这两种方法都有它们的优点和后备,所以我只是想知道是否有一个明确的最佳实践,在何时何地将状态/动作注入到一堆React组件中。
答案 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。