在React中我们应该在哪里发出API请求?

时间:2019-03-05 06:51:25

标签: javascript reactjs

我一直在API's生命周期中提出ComponentDidMount请求,并在回调中调用setState。但是,在深入研究时,我偶然发现我们不应该在此生命周期中调用setState,因为它会再次触发render方法,而React也不建议这样做。

那么在那种情况下,我们到底应该发出该请求并调用setState来使用之后的结果?

2 个答案:

答案 0 :(得分:1)

您绝对应该在componentDidMount中进行API调用。不建议重新渲染一个大组件,而应该做的是将UI分解为小的逻辑组件,并且仅重新渲染所需的组件,而不是整个组件。例如,您有一个名为HomeComponent的大组件,其中有3个名为NavComponentBodyComponentFooterComponent的小组件。您应该不要componentDidMount的{​​{1}}调用API,因为从HomeComponent调用setState会重新呈现其中的所有小组件HomeComponent,这是不必要的,因为您知道导航栏或页脚不需要重新渲染。而不是从HomeComponent开始,因为自从身体状态改变以来,仅身体部分需要重新渲染。因此,您应该从BodyComponent的{​​{1}}调用API,这样就可以仅重新渲染所需的内容。

答案 1 :(得分:0)

@Shababb Karim是正确的,但是如果我要在我的项目中实现API调用,我会添加一个状态管理库。 Redux是一种实现应用程序全局状态的好方法,您可以在其中设置上述API的数据。所有需要该数据的组件都可以附加到Redux状态以获取它。

在较小的项目中,Redux可能会有些开销。在这种情况下,还有其他类似Flux的选项(尽管我更喜欢Redux)。