我有一个React组件,可以在页面上呈现项目。从网络中检索项目。
加载组件时,应检索并呈现这些项目。
在组件加载后,将有一种机制来更新项目。
我的第一个想法是将网络请求放在componentDidMount
函数中。
这样做会破坏与redux和单向数据流/不变性相关的任何最佳实践吗?
相反,我应该向商店发送一个动作并依赖redux中间件来执行网络请求(最终会改变商店并导致重新呈现组件)?
答案 0 :(得分:1)
如果您的数据是本地数据,请在componentWillMount中执行,如果您的数据是全局数据,则通过调用操作来执行此操作。
所以基本上在componentDidMount
和componentWillMount
中进行异步调用是一样的。最有可能的是,componentWillMount
中的异步调用在componentDidMount
被触发之前不会返回。但是,如果你在componentDidMount
进行相同的调用,它将会返回。
在componentDidMount
中进行异步调用,可以清楚地表明组件首先渲染时没有数据,然后在数据到达时重新渲染,这隐含在componentWillMount
中。