2017-07-19 40 views
1

我有一个呈现页面上的项目的React组件。这些项目从网络中检索。在React/Redux应用程序中为网络请求定位逻辑

这些项目应该在组件加载时检索和渲染。

在组件加载完成后,还会有一种更新项目的机制。

我的第一个想法是将网络请求放在componentDidMount函数中。

这样做是否会打破与redux和单向数据流/不可变性相关的最佳实践?

取而代之的是,我应该向商店发送一个动作,并依靠redux中间件来执行网络请求(最终会更改存储并导致组件的重新渲染)?

+1

如果您的数据是本地数据,请在'componentWillMount'内执行,如果您的数据是全局数据,则通过调用'action'来完成。 – nrgwsth

+0

如果你做出这个答案,我会接受... – Ben

+0

@anuragasaurus通过将逻辑放在componentWillMount中,组件的DOM将不会出现。那么在调用componentDidMount之前,异步网络调用是否会返回?如果发生这种情况,我会得到意外的行为吗?我无法想象会发生什么.... – Ben

回答

1

如果您的数据是本地数据,请在componentWillMount中执行,如果您的数据是全局数据,则通过调用操作来完成。

所以在componentDidMountcomponentWillMount基本上做异步呼叫是一样的。很可能,componentWillMount中的异步调用在启动componentDidMount之前不会返回。但是,如果您在componentDidMount中拨打同一个电话,它将会返回。

componentDidMount中进行异步调用可以清楚地看到,组件将首先在没有数据的情况下渲染,然后在数据到达时重新渲染,这在componentWillMount中是隐含的。

相关问题