提问者:小点点

从redux-store加载数据的最佳位置在哪里?


我在父React组件中使用componentDidMount()方法从API中获取一些数据,然后将这些数据保存在redux状态。

在我的渲染方法中,我有另一个组件,它应该使用来自全局redux状态的数据。

我可以通过props向我的子组件发送数据,或者我可以使用mapStateToProps()加载它们。

如果我试图安慰你。在我的子组件构造函数或componentDidMount()方法中,从props将数据记录或分配给var,我没有按预期获取数据(我获取的是初始状态)。

安慰登录我的渲染方法将在第一次渲染时显示初始状态,第二次渲染时将显示正确的数据。

我需要点,我确信我有正确的数据。

...其中var a=这个。道具。来自国家的东西;将正确分配。

是渲染方法的最佳位置,以及通常这样做的最佳实践。谢谢。


共1个答案

匿名用户

这里有几个问题。

关于加载数据的位置,组件DDMount确实是调用ajax方法和加载数据的正确位置,正如facebook文档所建议的那样。

至于是否通过道具将数据传递给子组件,我喜欢遵循Dan Abramov(redux的作者)关于表示组件和容器组件的guid。简言之,尝试使用一个容器组件来加载您的数据并执行所有逻辑,然后通过道具将所有必要的内容传递给呈现组件,如果可能的话,使其成为纯功能。

关于何时获得正确的数据,请查看上面的React lifecycle文档。您将看到构造函数激发,然后组件将装载,然后呈现,然后组件装载。因此,如果ajax调用在componentDidMount中获取数据,那么您将首先调用render,导致在已经装载的组件上没有加载数据。大多数人通过放置微调器来解决这个问题,直到数据从ajax加载完毕。一个简单的if语句应该可以实现这一点