小编典典

在React.js中,我应该在componentWillMount或componentDidMount中发出初始网络请求吗?

reactjs

在react docs中,建议使用以下componentDidMount方法发出初始网络请求:

componentDidMount()挂载组件后立即调用。需要DOM节点的初始化应该在这里进行。如果需要从远程端点加载数据,
这是实例化网络请求的好地方。 在此方法中设置状态将触发重新渲染。

如果componentWillMount在呈现组件之前调用,那么在这里发出请求并设置状态不是更好吗?如果在这样做componentDidMount,则呈现组件,发出请求,更改状态,然后重新呈现组件。为什么在呈现任何内容之前发出请求更好呢?


阅读 387

收藏
2020-07-22

共1个答案

小编典典

您应该在中提出要求componentDidMount

如果在呈现组件之前调用componentWillMount,那么发出请求并在此处设置状态是否更好?

否,因为在呈现组件时请求不会完成。

如果我在componentDidMount中这样做,则呈现该组件,发出请求,更改状态,然后重新呈现该组件。为什么在呈现任何内容之前发出请求更好呢?

因为任何网络请求都是 异步的 。无论如何,除非您缓存了数据,否则就无法避免第二次渲染(在这种情况下,您根本不需要触发请求)。
您无法避免通过提前触发第二次渲染。 这不会有帮助。

在将来的React版本中,我们希望componentWillMount在某些情况下会触发不止一次,因此
您应该componentDidMount用于网络请求

2020-07-22