我正在研究过去 1 年的react。我们遵循的约定是在 中进行 API 调用componentDidMount
,在数据到来后获取数据和 setState。这将确保组件已安装并且设置状态将导致重新渲染组件但我想知道为什么我们不能在componentWillMount
或constructor
官方文档说:
componentWillMount() 在挂载发生前立即被调用。它在 render() 之前调用,因此在此方法中设置状态不会触发重新渲染。避免在此方法中引入任何副作用或订阅。
它说setting state in this method will not trigger a re-rendering
,在进行 API 调用时我不想要。如果我能够获取数据并能够设置状态(假设 API 调用非常快) incomponentWillMount
或 inconstructor
并且数据存在于第一次渲染中,我为什么要重新渲染?
如果 API 调用很慢,那么setState
将是异步的并且componentWillMount
已经返回,那么我将能够设置状态并且应该发生重新渲染。
总的来说,我很困惑为什么我们不应该在构造函数或 componentWillMount 中进行 API 调用。有人真的可以帮助我理解在这种情况下 react 是如何工作的吗?