1. 程式人生 > 實用技巧 >JS變數儲存與深拷貝和淺拷貝

JS變數儲存與深拷貝和淺拷貝

v16之前生命週期:

(1)initialization元件初始化階段

  

constructor(){
    super(props);
    this.state={}  
}

  super(props) 呼叫基類的構造方法,也將父元件的props注入給子元件,供子元件讀取props,只讀;state初始化 ,可修改

(2)Mounting元件掛載階段

  componentWillMount:在元件掛載到DOM前呼叫,且只會呼叫一次

  render:根據props和state,return一個React元素

  componentDidMount:元件掛載到DOM後呼叫,且只會呼叫一次

   componentWillMount =》render =》 componentDidMount

(3)update元件更新階段

  componentWillReceiveProps(nextProps) :只調用於props引起的元件更新過程中,引數nextProps是父元件傳給當前元件的新的props;

  shouldComponentUpdate(nextProps,nextState):此方法通過比較nextProps、nextState及當前元件的this.props、this.state,返回true時當前元件將繼續執行更新過程,返回false則當前元件更新停止,以此可減少元件的不必要渲染,優化元件效能;

  componentWillUpdate(nextProps,nextState):該方法在呼叫render方法前執行,可執行一些元件更新發生前的工作

  componentDidUpdate(prevProps,prevState):在元件更新後呼叫,可以操作元件更新的DOM,元件更新前的引數

  a. 父元件重新render的情況,導致props重傳引起的子元件渲染

    componentWillReceiveProps(nextProps) =》shouldComponentUpdate(nextProps,nextState) =》 componentWillUpdate(nextProps,nextState) =》 render =》 componentDidUpdate(prevProps,prevState)

  b. 元件自身呼叫setState

    shouldComponentUpdate =》 componentWillUpdate =》 componentDidUpdate

(4)unmounting元件解除安裝階段

  componentWillUnmount

v16.4生命週期:

  getDerivedStateFromProps(props,state) :在元件建立時和更新時的render方法之前呼叫,它應該返回一個物件來更新狀態,或者返回null不更新任何內容

  getSnapshotBeforeUpdate():被調用於render之後,可以讀取但無法使用DOM的時候。使得元件在可能更改之前從DOM捕獲一些資訊,如滾動位置。此生命週期返回的任何值都將作為引數傳遞給componentDidUpdate()

(1)建立時

  constructor =》getDerivedStateFromProps(props,state) =》 render =》 componentDidMount

(2)更新時

  getDerivedStateFromProps =》 shouldComponentUpdate =》 render =》 getSnapshotBeforeUpdate =》 componentDidUpdate

(3)解除安裝時

  componentWillUnmount