为什么我需要使用 componentDidMount 进行异步或 ajax?对于ComponentWillMount,我理解这是因为无论ComponentWillMount发生什么变化,都存在无法重新渲染的问题。但对于构造函数来说,如果发生变化,不会重新渲染吗?
我以自己的方式思考这个问题的原因是,如果你在构造函数中进行异步,这可能是因为它会花费大量的首次渲染时间,并且将花费大量的时间来加载页面。还有其他原因吗?
最佳答案
假设 Api 调用发生在组件将挂载/构造函数中
异步调用在 CWM/Constructor 中触发,该函数的其他行将开始执行,一旦这些函数完成,渲染函数将开始执行并假设渲染函数的 50% 已执行,同时您得到您在 CWM/构造函数中进行的异步调用的响应,现在您将调用 setState 来触发更新周期来更新数据,但框架 html 本身尚未准备好(因为渲染函数尚未完成) )数据将去往何处并更新?
这完全浪费了渲染函数的第一次执行。相反,让渲染函数完成,然后构造 html 对象,然后可以更新数据。
简单来说,我们需要 build 房子并搬进去,而不是我们搬到空地并开始 build 房子。第二种也可以,但不太舒服。
从问题来看,看来你对构造函数和CWM感到困惑,两者没有区别,因为react在最新版本中删除了CWM以避免冗余。
关于javascript - 为什么我必须在 componentDidMount() 中而不是在 constructor() 中进行 AJAX 操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56965318/