1.constructor(props, context)
- 構(gòu)造函數(shù),在創(chuàng)建組件的時(shí)候調(diào)用一次。
2.componentWillMount()
- 在組件render之前立即調(diào)用
Tip1: 不建議在此請(qǐng)求數(shù)據(jù),由于請(qǐng)求數(shù)據(jù)接口一般都是異步,這時(shí)候render已經(jīng)被執(zhí)行,建議在componentDidMount 數(shù)據(jù)
Tip2: 如果在服務(wù)端渲染,該鉤子函數(shù)將被調(diào)用兩次,一次服務(wù)端,一次瀏覽器端,而componentDidMount函數(shù)只會(huì)在瀏覽器端請(qǐng)求一次
Tip3: 在taro構(gòu)建的小程序里對(duì)應(yīng)的生命周期是 onLoad。
3..componentDidMount()
- 所有的組件(包括子組件)在render執(zhí)行完之后立即調(diào)用,并且只會(huì)被調(diào)用一次。
Tip: 建議在此請(qǐng)求數(shù)據(jù)
4. componentWillReceiveProps(nextProps)
- 在props被改變時(shí)被觸發(fā),初始化render時(shí)不調(diào)用。
- 舊的屬性還是可以通過(guò)this.props來(lái)獲取,在這里通過(guò)調(diào)用this.setState()來(lái)更新你的組件狀態(tài)。
Tip1: 某些情況下,props沒(méi)變也會(huì)觸發(fā)該鉤子函數(shù),需要在方法里手動(dòng)判斷一下this.props和nextProps是否相同,不相同了才執(zhí)行我的更新方法。
Tip2:該函數(shù)一般用來(lái)更新依賴props的狀態(tài)
5. shouldComponentUpdate(nextProps, nextState)
- 發(fā)生重渲染時(shí),在render()函數(shù)調(diào)用前被調(diào)用的函數(shù),當(dāng)函數(shù)返回false時(shí)候,阻止接下來(lái)的render()函數(shù)的調(diào)用,阻止組件重渲染,而返回true時(shí),組件照常重渲染。
- 該方法并不會(huì)在初始化渲染或當(dāng)使用forceUpdate()時(shí)被調(diào)用。
6.componentWillUpdate(nextProps, nextState)
- shouldComponentUpdate返回true或者調(diào)用forceUpdate之后,componentWillUpdate會(huì)被調(diào)用。
7. getSnapshotBeforeUpdate(prevProps, prevState)
- 該函數(shù)在最新的渲染輸出提交給DOM前將會(huì)立即調(diào)用。它讓你的組件能在當(dāng)前的值可能要改變前獲得它們。這一生命周期返回的任何值將會(huì) 作為參數(shù)被傳遞給componentDidUpdate()。
8. componentDidUpdate(prevProps, prevState)
- 除了首次render之后調(diào)用componentDidMount,其它render結(jié)束之后都是調(diào)用componentDidUpdate。
9.componentWillUnmount()
- 在組件被卸載和銷毀之前立刻調(diào)用。可以在該方法里處理任何必要的清理工作,例如解綁定時(shí)器,取消網(wǎng)絡(luò)請(qǐng)求,清理任何在componentDidMount環(huán)節(jié)創(chuàng)建的DOM元素。
10.componentDidCatch(error, info)
- 該函數(shù)稱為錯(cuò)誤邊界,捕捉發(fā)生在子組件樹(shù)中任意地方的JavaScript錯(cuò)誤,打印錯(cuò)誤日志,并且顯示回退的用戶界面。
Tip:錯(cuò)誤邊界只捕捉樹(shù)中發(fā)生在它們之下組件里的錯(cuò)誤。一個(gè)錯(cuò)誤邊界并不能捕捉它自己內(nèi)部的錯(cuò)誤。
11.render()
- render是一個(gè)React組件所必不可少的核心函數(shù)(上面的其它函數(shù)都不是必須的)。
Tip:記住,不要在render里面修改state。
12.React組件更新路徑
在線測(cè)試:http://wximg.gtimg.com/shake_tv/test/lifeCycle2113.html

組件更新路徑圖
參考文章:https://blog.csdn.net/Gytha_1/article/details/80062454?utm_source=blogxgwz8