为什么我们不应该在ComponentDidMount中使用setState

时间:2018-11-05 06:24:52

标签: reactjs

在此代码沙箱中 https://codesandbox.io/s/qxo15z8k0j

我试图在子Component的componentDidMount上调用setState

这不是一个好习惯吗?为什么以及如果不是,我们应该在哪里进行setstate以及何时可以在componentDidMount中设置setState

我在本文中看到,提到了componentDidMount中的fetchData https://daveceddia.com/where-fetch-data-componentwillmount-vs-componentdidmount/

请提出建议

2 个答案:

答案 0 :(得分:2)

您可以在componentDidMount内部设置setState。

直接查看文档

  

您可以立即在componentDidMount()中调用setState()。它会触发额外的渲染,但是会在浏览器更新屏幕之前发生。

他们确实警告说,这可能会导致性能下降,并建议您最有可能在构造函数中设置组件的初始状态。

答案 1 :(得分:1)

这不是一个好习惯吗?

实际上不是。当我们在componentDidMount中使用setState时,它将触发一个精确的render()调用,它发生在呈现组件之前,因此用户看不到更改。有时可能会导致性能问题。 / p>

何时可以在componentDidMount中设置状态

通常在您从网络上获取数据时发生,并且在成功获取数据后应设置setState。