react生命周期componentWillMount、componentDidMount
是现在React请求数据的两个生命周期,
- componentWillMount
这个生命周期在React是在render前执行,而且只执行一次,在这里this.setState
在页面更新一次,而且不会重新渲染。
问题一:但是我有一个疑问,因为ajax是异步请求,在浏览器的时间循环机制中是在第一次macrotask事件结束前调用回调函数的this.setState
(这个时候dom应该已经或者是vnode已将形成),但是dom应该已经或者是vnode已将形成是调用的render的函数,这里是不是矛盾了?
问题二:React数据请求到底在哪个生命周期中请求,React推荐在componentDidMount请求数据,这个优势是什么(这里调用会导致重新渲染)
一般是放在
componentDidMount
里,你放在componentWillMount
里,拿到数据之后setState的时机是不确定的,可能是render之前,也可能是render之后,并不是下一个时间片,这依赖于ajax的返回时间,也并不是说就不能放在componentWillMount
里,你也可以把ajax写成同步的