为什么我需要对异步或ajax使用componentDidMount?对于componentWillMount,我知道这是因为componentWillMount中发生的任何更改都存在无法重新渲染的问题。但是对于构造函数,如果发生更改,是否会重新渲染?
我以自己的方式考虑它的原因是,如果您在构造函数中进行异步处理,可能是因为它将花费大量的首次渲染时间,并且将花费大量的时间进行加载页面。还有其他原因吗?
答案 0 :(得分:2)
让我们假设在组件将挂载/构造器中发生了Api调用
在CWM / Constructor中触发了Async调用,此函数的其他行将开始执行,完成这些函数后,将开始执行render函数并假定执行了50%的render函数,同时您获得了来自您在CWM /构造函数中进行的异步调用的响应,现在您将调用setState来触发更新周期以更新数据,但html骨架本身尚未准备好(因为render函数尚未完成) )数据将流向何处并进行更新?
完全浪费了第一次执行render函数的时间。取而代之的是让render函数变得完整,然后构造html对象,然后可以更新数据。
简单来说,我们需要建造房屋并搬入,而不是继续到空地并开始建造房屋。第二种也是可能的,但并不舒适。
从问题开始,似乎您在构造函数和CWM之间感到困惑,两者之间没有区别,因为该反应已删除了最新版本的CWM,以避免冗余。