react生命周期詳解


上面的這幅圖已經很好地詮釋一個react組件的生命周期,所以認真看圖!認真看圖!認真看圖!

一、getDefaulProps()

1、這個是唯一一個作用于組件類的方法,只調用一次,用于設置默認的props,返回值是一個對象;

2、設置的props不是由父組件傳進來的,但也是存在this.props中,且設置的props能夠被所有的該組件類的實例共享

例子:


二、getInitialState()

1、作用于組件實例,在組件實例創建時調用一次,用于初始化每個組件實例的state,返回值是一個對象,即this.state;

2、在改方法中設置state的初始值時,已經能夠訪問this.props了,也就是說,可以根據this.props中的屬性值來設置初始state(狀態)值。

例子:

三、componentWillMount()

1、作用于組件實例,在首次執行render()方法之前調用一次

2、在這個方法中,即使通過setState()方法改變state也不會引起render()方法的再執行,但更改的state確實已經發生變化。

四、render()

1、render()是必須的方法,作用是創建一個虛擬的DOM(react的特性之一);

2、返回值可以是null、false或者一個頂級的組件,也就是說下列這種會報錯:


3、render()方法是一個純凈的方法,只能通過this.state和this,props訪問數據,不對state做更改,換句話說,render()方法只負責呈現。

五、componentDidMount()

1、componentDidMount()在真實的DOM被渲染出來時調用一次,在這個方法中調用this.setState()方法,會引起render()方法的再執行,也就是虛擬DOM的重新渲染(至于真實DOM會不會重渲染,由react判斷);

2、官方設計這個方法是用來加載外部的數據,或者處理一些其他副作用的代碼;

3、在這個方法中已經可以訪問真實的DOM了。

六、componentWillReceiveProps(nextProps)

1、每當父組件傳過來的prop發生變化時自動調用,新的prop存在nextProps,可以通過nextProps.[propName]訪問。

七、componentWillUpdate()

1、每當組件接受新的props或state后,重新渲染(即再執行render())方法之前調用,此時不允許更新props或state。

八、componentDidUpdate()

1、根據新的新的props或state,完成重新渲染后調用,每當組件根據新的props或state完成重新渲染后,都會被調用。

九、componentWillUnmount()

1、組件被移除之前被調用一次,可以做一些清理工作,比如在componentDidMount()方法中創建了定時器或者添加了事件的監聽器,都需要在這個方法中撤銷。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Each component has several "lifecycle methods" that you c...
    暮落晨曦閱讀 484評論 0 0
  • 這一部分內容一直一知半解,最近發現一篇文章,非常好的解釋了生命周期的問題,留存在這里,以備后查! 簡介 一個rea...
    春木橙云閱讀 944評論 0 5
  • 1 React生命周期流程 調用流程可以參看上圖。分為實例化,存在期和銷毀三個不同階段。介紹生命周期流程的文章很多...
    Dabao123閱讀 329評論 0 1
  • Hello大家好。大家可能會想問為什么最近公眾號不更新文章了,在這里說明一下。由于小編們近期工作和業務繁忙(我就不...
    sidiWang閱讀 33,638評論 9 48
  • 組件生命周期,組件本質上是狀態機 組件把狀態和結果一一對應起來 組件中有state狀態 和 props屬性,屬性是...
    mannysys閱讀 396評論 0 0