1. 程式人生 > >React Native元件的生命週期

React Native元件的生命週期

                  生命週期執行流程圖

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

           1.Mounting(裝載)

           2.Updating (更新)

           3.Unmounting(移除)


生命週期執行流程圖

 

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 元素。

 

本帖來源於:http://www.devio.org/2016/08/10/React-Native%E4%B9%8BReact%E9%80%9F%E5%AD%A6%E6%95%99%E7%A8%8B-(%E4%B8%AD)/