React Native元件的生命週期
阿新 • • 發佈:2018-11-09
元件的生命週期分成三個狀態:
生命週期執行流程圖
1.Mounting(裝載)
getInitialState()
: 在元件掛載之前呼叫一次。返回值將會作為 this.state 的初始值。componentWillMount()
:伺服器端和客戶端都只調用一次,在初始化渲染執行之前立刻呼叫。componentDidMount()
:在初始化渲染執行之後立刻呼叫一次,僅客戶端有效(伺服器端不會呼叫)。
2.Updating (更新)
- componentWillReceiveProps(object nextProps) 在元件接收到新的 props 的時候呼叫。在初始化渲染的時候,該方法不會呼叫。
用此函式可以作為 react 在 prop 傳入之後, render() 渲染之前更新 state 的機會。老的 props 可以通過 this.props 獲取到。在該函式中呼叫 this.setState() 將不會引起第二次渲染。
- shouldComponentUpdate(object nextProps, object nextState): 在接收到新的 props 或者 state,將要渲染之前呼叫。
該方法在初始化渲染的時候不會呼叫,在使用 forceUpdate 方法的時候也不會。如果確定新的 props 和 state 不會導致元件更新,則此處應該 返回 false。
心得:重寫次方你可以根據實際情況,來靈活的控制組件當 props 和 state 發生變化時是否要重新渲染元件。
- componentWillUpdate(object nextProps, object nextState):在接收到新的 props 或者 state 之前立刻呼叫。
在初始化渲染的時候該方法不會被呼叫。使用該方法做一些更新之前的準備工作。
注意:你不能在該方法中使用 this.setState()。如果需要更新 state 來響應某個 prop 的改變,請使用
componentWillReceiveProps
。
- componentDidUpdate(object prevProps, object prevState): 在元件的更新已經同步到 DOM 中之後立刻被呼叫。
該方法不會在初始化渲染的時候呼叫。使用該方法可以在元件更新之後操作 DOM 元素。
3.Unmounting(移除)
- componentWillUnmount:在元件從 DOM 中移除的時候立刻被呼叫。
在該方法中執行任何必要的清理,比如無效的定時器,或者清除在 componentDidMount 中建立的 DOM 元素。