生命週期鉤子函數:
生命週期鉤子函數應用於有狀態組件中,有些只運行一次,有些需要運行多次
創建組件時候需要執行的鉤子函數(按照執行順序):
constructor()-------->componentWillMount()-->|render()------------>|componentDidMount()
1、constructor:不是react的方法,是es6的方法,可以在react中使用,調用當前組件的父級,也可以在函數中設置當前組件所需要的狀態state;
2、componentWillMount:當前組件即將生成,可以在該函數中修改狀態state;
3、render:創建虛擬dom,更新dom,加載配套子組件(並不是加載所有子組件)
4、componentDidMount:組件渲染完畢,執行該函數,在該函數中一定不能更新狀態,因爲一旦更新狀態,就會進行重新render,又會執行該函數,會陷入死循環。
組件發生變化,觸發更新的鉤子函數:
組件更新的時候觸發的相關函數(按照執行順序):
componentWillReceiveProps(nextProps){}---------->組件發生改變觸發
shouldComponentUpdate(nextProps,nextState){} --------->控制組件是否重新渲染
componentWillUpdate(nextProps,nextState){} --------->進入重新渲染流程
render(){} --------->更新相關組件
componentDidUpdate(){} --------->組件渲染完畢
componentWillReceiveProps:組件將要接收屬性,執行該方法
shouldComponentUpdate:是否要更新當前組件,非常好用的方法,react中唯一一個控制組件是否渲染的方法(根據條件判斷),方法返回false不進行到下一個階段,返回爲true,則進行到下一個階段
componentWillUpdate:組件進入到渲染流程,即將更新
render:更新當前相關的子組件,渲染完畢後走到下一步
componentDidUpdate:渲染完畢執行的方法