1. 程式人生 > >react元件生命週期鉤子函式

react元件生命週期鉤子函式

掛載期

constructor 資料接收 實現繼承super(props)
componentWillMount 資料掛載之前 可以操作資料 不可以操作dom
componentDidMount 資料掛載之後 可以操作資料和dom
render 渲染元件 和 html 標籤

更新期

shouldComponentUpdate 檢測元件內的變化 可以用作頁面效能的優化(預設值為true)
componentReceiveProps 接收元件傳入輸入資料
componentWillUpdate 元件更新之前呼叫
componentDidUpdate 元件更新之後呼叫
render

元件更新之後渲染元件

銷燬期

componentWillUnmount 元件銷燬時呼叫 可以做一些記憶體的優化 (全域性變數,閉包,計時器,事件)

生命週期 呼叫次數 能否使用 setSate()
getDefaultProps 1(全域性呼叫一次)
getInitialState 1
componentWillMount 1
render >=1
componentDidMount 1
componentWillReceiveProps >=0
shouldComponentUpdate >=0
componentWillUpdate >=0
componentDidUpdate >=0
componentWillUnmount 1

元件生命週期的三個狀態:

Mounting 已插入真實 DOM
Updating 正在被重新渲染
Unmounting 已移出真實 DOM

生命週期的方法:

方法 作用
componentWillMount 在渲染前呼叫,在客戶端也在服務端
componentDidMount 在第一次渲染後呼叫,只在客戶端。之後元件已經生成了對應的DOM結構,可以通過this.getDOMNode()來進行訪問
componentWillReceiveProps 在元件接收到一個新的 prop (更新後)時被呼叫。這個方法在初始化render時不會被呼叫
shouldComponentUpdate 返回一個布林值。在元件接收到新的props或者state時被呼叫。在初始化時或者使用forceUpdate時不被呼叫
componentWillUpdate 在元件接收到新的props或者state但還沒有render時被呼叫。在初始化時不會被呼叫
componentDidUpdate 在元件完成更新後立即呼叫。在初始化時不會被呼叫
componentWillUnmount 在元件從 DOM 中移除之前立刻被呼叫