2017-05-31 126 views
4

我正在与其他一些开发人员一起开展React + Redux项目,我们无法就在何处传递状态和操作的最佳做​​法达成一致。将Redux状态转换为组件时的最佳实践

我的方法是有一个'容器'或'提供者'组件,它是父组件,所有需要的状态和动作映射到状态并传递到子组件中,从而创建单一的事实源。然而,不利的一面是,您必须记住将操作和值传递给每个子组件,这可能会非常棘手。

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

我可以看到两种方法都有其优点和回退,所以我只是想知道是否有一个确定的最佳实践来决定何时何地将状态/动作注入到React组件堆栈中。

+0

我倾向于杰里米的回答,但是关于这个问题并没有硬性和快速的“规则”,更多的是关于意见以及你想如何构造事物。 –

回答

5

我曾在一个比较大的终极版的代码库和方法,我们选择了和我喜欢用mapStateToProps容器分量派遣行动,并委托渲染哑组件你的第二个方法。

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

终极版文档出奇的好做,检查出来,它建议实施mapStateToPropshttp://redux.js.org/docs/basics/UsageWithReact.html

+0

我完全同意mapStateToProps上的容器组件,它派遣行动并委托渲染为哑组件+1。 – GibboK

+0

因此,如果使用集装箱组件说...堆栈的一半是合法的?因此,一个容器组件,它调用一个愚蠢的组件,说...调用另一个容器组件? –

+0

是的!甚至一路下降或一路下降。这个想法是,那么你可以在任何地方使用你的容器组件,它应该与其环境无关,这就是Redux的美丽。 –