react生命周期分為三中轉態:初始轉態,更新狀態以及卸載狀態
*****
### 初始轉態:
***1、getDefaultProps()***
~~~
此時可設置初始(默認)的props
~~~
***2、getInitialState()***
~~~
在es6語法中已移除,改為在constructor設置初始的state值
~~~
***3、componentWillMount()***
~~~
在組件渲染前調用,此時dom還未掛載在html中,此函數整個生命周期只調用一次,可修改state
~~~
***4、 render()***
~~~
組件渲染時調用,虛擬dom的創建及更新都會在此時進行
~~~
***5、componentDidMount()***
~~~
組件渲染完成后調用,此時可獲取dom節點,該函數整個生命周期只調用一次,可修改state
~~~
### 更新狀態
***6、componentWillReceiveProps(nextProps)***
~~~
組件接受到新的props時調用,初始化時不調用
~~~
***7、shouldComponentUpdate(nextProps, nextState)***
~~~
組件接受新的props或state時調用,判斷是否需要更新,接受的兩個參數分別為即將更新的props和state狀態值,可與this.porps與this.state(即更新前的狀態)對比,該函數回返回一個boolean類型,默認為true,即更新dom樹
~~~
***8、componentWillUpdata(nextProps, nextState)***
~~~
組件將要更新時調用,接受的兩個參數分別為即將更新的props和state狀態值。不可在此時更改state,不然會導致無限循環更新state,從而崩潰報錯
~~~
***9、render()***
~~~
更新完成后再次渲染
~~~
***10、componentDidUpdate()***
~~~
更新完成后調用,同樣可獲取dom節點,初始化時不調用
~~~
### 卸載狀態
***11、componentWillUnmount()***
~~~
組件將要卸載時調用,可以在此時清除定時器與一些監聽事件
~~~