
- 第一階段:是組件第一次繪制階段,如圖中的上面虛線框內(nèi),在這里完成了組件的加載和初始化;
- 第二階段:是組件在運(yùn)行和交互階段,如圖中左下角虛線框,這個(gè)階段組件可以處理用戶交互,或者接收事件更新界面;
- 第三階段:是組件卸載消亡的階段,如圖中右下角的虛線框中,這里做一些組件的清理工作
生命周期
實(shí)例化
getDefaultProps
在組件創(chuàng)建前,會(huì)全局調(diào)用一次 getDefaultProps(),初始化默認(rèn)props屬性
getInitialState
在組件創(chuàng)建并加載時(shí),初始化組件的狀態(tài)
componentWillMount
在初始化狀態(tài)之后,render() 之后調(diào)用
render
渲染并返回 DOM 結(jié)構(gòu)
componentDidMount
在渲染完成后,通知組件已經(jīng)渲染完成
重新渲染
componentWillReceiveProps
如果有新收到的 Props (屬性)就會(huì)調(diào)用該方法,舊的屬性還是可以通過 this.props 來獲取,可以通過調(diào)用 this.setState() 來更新你的組件狀態(tài),這里調(diào)用更新狀態(tài)是安全的,并不會(huì)觸發(fā)額外的 render() 調(diào)用
shouldComponentUpdate
函數(shù)的返回值決定是否需要更新組件,如果 true 表示需要更新,繼續(xù)走后面的更新流程。否者,則不更新,直接進(jìn)入等待狀態(tài)
componentWillUpdate
如果組件狀態(tài)或者屬性改變,并且上面的 shouldComponentUpdate() 返回為 true,就會(huì)開始準(zhǔn)更新組件,并調(diào)用 componentWillUpdate()
void componentWillUpdate(
object nextProps, object nextState
)
在這個(gè)函數(shù)中不能使用 this.setState 來修改狀態(tài)。函數(shù)調(diào)用之后,就會(huì)把 nextProps 和 nextState 分別設(shè)置到 this.props 和 this.state 中,然后就是調(diào)用 render()進(jìn)行頁面的渲染
render
componentDidUpdate
調(diào)用了 render() 更新完成界面之后,會(huì)調(diào)用 componentDidUpdate() 來通知界面已經(jīng)渲染完成了
componentWillUnmount
當(dāng)組件要被從界面上移除的時(shí)候,就會(huì)調(diào)用 componentWillUnmount()