React的生命周期函數:在某一時刻組件會自動調用執(zhí)行的函數。
下面分階段給出各個生命周期函數。

React生命周期
組件初始化(Initialization)階段
constructor(props)
組件掛載(Mounting)階段
componentWillMount()
在組件即將被掛載到頁面時執(zhí)行
render()
組件掛載時執(zhí)行
componentDidMount()
組件被掛載到頁面后自動執(zhí)行
組件更新(Updation)階段
props、states發(fā)生變化時進入該階段
如果:
一個組件要從父組件接收參數 && 該組件已經存在于父組件中,則在其
執(zhí)行shouldComponentUpdate()之前,執(zhí)行:
componentWillReceiveProps()
shouldComponentUpdate()
組件需要更新嗎?返回true,則組件更新,否則不更新;
componentWillUpdate()
組件被更新前執(zhí)行,前提是shouldComponentUpdate()返回了true;
render()
重新渲染,更新組件;
componentDidUpdate()
組件更新完成后執(zhí)行。
組件卸載(UnMounting)階段
componentWillUnmount()
- 該組件即將被移除時執(zhí)行
render() 函數必須定義,因為它在Component中并沒有被實現。
生命周期函數的應用場景:
1. 用shouldComponentUpdate() 避免重復渲染
//避免無謂渲染,提升性能
shouldComponentUpdate(nextProps, nextState) {
if(nextProps.content !== this.props.content) {
return true;
} else {
return false;
}
}
2. componentDidMount()
異步Ajax請求不適合被寫在render()中,因為那樣會導致多次請求,
它更適合被放在componentDidMount()中。
積累React中性能優(yōu)化的Tips:
- this綁定放在組件的constructor中(尚未詳細講解);
- setState() 內置了優(yōu)化的方式(異步);
- 虛擬DOM內部優(yōu)化了比對和重新渲染的效率;
- 生命周期函數的使用;