react組件本質上是狀態機,輸入肯定,輸出必定肯定。
狀態發生轉換時會觸發不一樣的鉤子函數,從而讓開發者有機會作出響應。
組件生命週期之鉤子函數:「鉤子」就是在某個階段給你一個作某些處理的機會。生命週期鉤子函數就是在組件預備、建立、使用和銷燬的過程當中的函數監聽react
組件的生命週期可分爲3個部分:函數
一. mount性能
二. updatingthis
三. unmountspa
1.初始化狀態時可調用的鉤子函數(mount):以下
getDefaultProps:設置props的初始值,只會調用一次。
組件生命週期之實例化操做:getInitialState,componentWillMount,render,componentDidMount,
執行順序如上排序
每當組件被調用時,都會觸發實例化函數
每當this.setState觸發時,都會調用render函數,而不會去調用組件的其餘實例化操做。component
2.運行中階段時可調用的鉤子函數(updating):以下排序
componentWillReceiveProps:組件將要接收到屬性的時候調用。父組件修改屬性觸發,能夠修改新屬性、修改狀態。
shouldComponentUpdate:組件是否須要更新,當組件接收到新屬性或新狀態的時候會被調用。若是返回false,後面的render函數就不會被調用,調高性能。
componentWillUpdate:組件將會被更新。不能修改屬性和狀態。
render:跟初始化階段的render函數同樣。
componentDidUpdate:組件已經被更新。能夠修改DOM。生命週期
執行順序如上排序開發
第一次加載時(初始化)不會觸發上述鉤子函數,當state狀態改變時觸發。get
3.銷燬中階段時可調用的鉤子函數(unmount):以下
componentWillUnmount:銷燬前調用