我有一个呈现页面上的项目的React组件。这些项目从网络中检索。在React/Redux应用程序中为网络请求定位逻辑
这些项目应该在组件加载时检索和渲染。
在组件加载完成后,还会有一种更新项目的机制。
我的第一个想法是将网络请求放在componentDidMount
函数中。
这样做是否会打破与redux和单向数据流/不可变性相关的最佳实践?
取而代之的是,我应该向商店发送一个动作,并依靠redux中间件来执行网络请求(最终会更改存储并导致组件的重新渲染)?
我有一个呈现页面上的项目的React组件。这些项目从网络中检索。在React/Redux应用程序中为网络请求定位逻辑
这些项目应该在组件加载时检索和渲染。
在组件加载完成后,还会有一种更新项目的机制。
我的第一个想法是将网络请求放在componentDidMount
函数中。
这样做是否会打破与redux和单向数据流/不可变性相关的最佳实践?
取而代之的是,我应该向商店发送一个动作,并依靠redux中间件来执行网络请求(最终会更改存储并导致组件的重新渲染)?
如果您的数据是本地数据,请在componentWillMount中执行,如果您的数据是全局数据,则通过调用操作来完成。
所以在componentDidMount
和componentWillMount
基本上做异步呼叫是一样的。很可能,componentWillMount
中的异步调用在启动componentDidMount
之前不会返回。但是,如果您在componentDidMount
中拨打同一个电话,它将会返回。
在componentDidMount
中进行异步调用可以清楚地看到,组件将首先在没有数据的情况下渲染,然后在数据到达时重新渲染,这在componentWillMount
中是隐含的。
如果您的数据是本地数据,请在'componentWillMount'内执行,如果您的数据是全局数据,则通过调用'action'来完成。 – nrgwsth
如果你做出这个答案,我会接受... – Ben
@anuragasaurus通过将逻辑放在componentWillMount中,组件的DOM将不会出现。那么在调用componentDidMount之前,异步网络调用是否会返回?如果发生这种情况,我会得到意外的行为吗?我无法想象会发生什么.... – Ben