首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从redux-store加载数据的最佳位置是哪里?

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

Stack Overflow用户
提问于 2017-07-07 23:29:01
回答 1查看 476关注 0票数 2

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

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

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

如果我试图在我的子组件构造函数或componentDidMount()方法中从属性中console.log或将数据赋值给var,我就得不到预期的数据(我得到的是初始状态)。

我的render方法中的Console.log将在第一次呈现时显示初始状态,在第二次呈现时显示正确的数据。

我需要确定我有正确数据的地方。

将正确分配...where var a= this.props.somethingFromState;。

是渲染方法的最佳位置,以及通常情况下执行此操作的最佳实践。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-07 23:40:49

这里有几个问题。

就加载数据的位置而言,根据facebook docs的建议,componentDidMount确实是调用ajax方法和加载数据的正确位置。

至于是否随后通过道具将数据传递给子组件,我喜欢在presentational vs container components上遵循Dan Abramov(redux的作者)的guid。简而言之,尝试有一个容器组件来加载数据并执行所有逻辑,然后通过props向下传递任何需要的表示组件,如果可能的话,使它们成为纯函数。

关于何时拥有正确的数据,请查看上面的React生命周期文档。您将看到,依次触发constructorcomponentWillMountrendercomponentDidMount。因此,如果您的ajax调用获取componentDidMount中的数据,那么您将首先调用render,从而不会在已经安装的组件上加载任何数据。大多数人通过放置一个微调器来解决这个问题,直到数据从ajax加载完毕。一个简单的if语句就可以做到这一点。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44974568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档