React組件聲明周期過程說明

16775500-8d325f8093591c76.jpg

實例化

首次實例化

  • getDefaultProps
  • getInitialState
  • componentWillMount
  • render
  • componentDidMount

實例化完成后的更新

  • getInitialState
  • componentWillMount
  • render
  • componentDidMount

存在期

組件已存在時的狀態(tài)改變

  • componentWillReceiveProps
  • shouldComponentUpdate
  • componentWillUpdate
  • render
  • componentDidUpdate
    銷毀&清理期
  • componentWillUnmount

說明
生命周期共提供了10個不同的API。

  1. getDefaultProps作用于組件類,只調(diào)用一次,返回對象用于設(shè)置默認(rèn)的props,對于引用值,會在實例中共享。

  2. getInitialState作用于組件的實例,在實例創(chuàng)建時調(diào)用一次,用于初始化每個實例的state,此時可以訪問this.props。

  3. componentWillMount在完成首次渲染之前調(diào)用,此時仍可以修改組件的state。

  4. render必選的方法,創(chuàng)建虛擬DOM,該方法具有特殊的規(guī)則:

  • 只能通過this.propsthis.state訪問數(shù)據(jù)
  • 可以返回null、false或任何React組件
  • 只能出現(xiàn)一個頂級組件(不能返回數(shù)組)
  • 不能改變組件的狀態(tài)
  • 不能修改DOM的輸出
  1. componentDidMount真實的DOM被渲染出來后調(diào)用,在該方法中可通過this.getDOMNode()訪問到真實的DOM元素。此時已可以使用其他類庫來操作這個DOM。
    在服務(wù)端中,該方法不會被調(diào)用。

6.componentWillReceiveProps組件接收到新的props時調(diào)用,并將其作為參數(shù)nextProps使用,此時可以更改組件props及state。

 componentWillReceiveProps: function(nextProps) {
        if (nextProps.bool) {
            this.setState({
                bool: true
            });
        }
    }
  1. shouldComponentUpdate組件是否應(yīng)當(dāng)渲染新的propsstate,返回false表示跳過后續(xù)的生命周期方法,通常不需要使用以避免出現(xiàn)bug。在出現(xiàn)應(yīng)用的瓶頸時,可通過該方法進(jìn)行適當(dāng)?shù)膬?yōu)化。
    在首次渲染期間或者調(diào)用了forceUpdate方法后,該方法不會被調(diào)用
  2. componentWillUpdate接收到新的props或者state后,進(jìn)行渲染之前調(diào)用,此時不允許更新props或state。
  3. componentDidUpdate完成渲染新的props或者state后調(diào)用,此時可以訪問到新的DOM元素。

10.componentWillUnmount組件被移除之前被調(diào)用,可以用于做一些清理工作,在componentDidMount方法中添加的所有任務(wù)都需要在該方法中撤銷,比如創(chuàng)建的定時器或添加的事件監(jiān)聽器。

生命周期方法調(diào)用次數(shù).png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 原教程內(nèi)容詳見精益 React 學(xué)習(xí)指南,這只是我在學(xué)習(xí)過程中的一些閱讀筆記,個人覺得該教程講解深入淺出,比目前大...
    leonaxiong閱讀 2,954評論 1 18
  • 目前,react組件有三種寫法,分別是es5的createClass寫法,es6的class寫法,以及statel...
    ZoomFunc閱讀 1,913評論 0 1
  • 在React Native中使用組件來封裝界面模塊時,整個界面就是一個大的組件,開發(fā)過程就是不斷優(yōu)化和拆分界面組件...
    ITxiansheng閱讀 986評論 1 2
  • 自己最近的項目是基于react的,于是讀了一遍react的文檔,做了一些記錄(除了REFERENCE部分還沒開始讀...
    潘逸飛閱讀 3,750評論 1 10
  • [姑娘江.養(yǎng)生茶坊]賓陽體驗館于2016年12月28日正式開業(yè)了,歡迎新老客戶蒞臨品鑒體驗,姑娘們在廣西賓陽縣賓州...
    姑娘江邊的老九閱讀 357評論 0 0

友情鏈接更多精彩內(nèi)容