React入門--組件生命周期

React組件有自己的生命周期方法,React將組件從掛載(Mounting)-->更新(Updating)-->卸載Unmounting完成整個生命周期。每個階段都有不同的方法以便于開發(fā)者自定義組件的特性。

整個組件的生命周期其實包含幾種情況:

  • 組件被掛載(實例化)
  • 組件狀態(tài)或?qū)傩愿?/li>
  • 組件被卸載(銷毀)

掛載


掛載階段組件擁有一共5個相關(guān)方法

  • getDefaultProps--------這個方法將在組件被創(chuàng)建時自動執(zhí)行一次,其中的值會被緩存下來作為this.props的默認(rèn)值
  • getInitialState--------這個方法也會在組件被創(chuàng)建時自動執(zhí)行一次,其中的值會被緩存下來作為this.state的默認(rèn)值
  • componentWillMount-------組件將要被掛載時自動執(zhí)行一次,這個方法在組件的整個生命周期中只會執(zhí)行一次,所以可以用來初始化一些組件的相關(guān)信息
  • render--------將組件渲染到頁面中
  • componentDidMount--------表示組件已經(jīng)被掛載到頁面上,頁面已經(jīng)存在了組件相關(guān)的DOM結(jié)構(gòu),這時可以使用Ajax請求數(shù)據(jù)或一些DOM相關(guān)的操作

更新(狀態(tài)或?qū)傩愿淖儯?/h2>

更新階段共有4個相關(guān)方法

  • componentWillReceiveProps(newProps)--------當(dāng)組件獲取到新的屬性props時調(diào)用,初始化掛載階段不會調(diào)用
  • shouldComponentUpdate(nextProps, nextState)--------當(dāng)獲取到新的propsstate,將要渲染之前調(diào)用,返回一個布爾值,為true表示渲染組件,false則不會渲染
  • componentWillUpdate--------當(dāng)確定組件需要更新,在render方法之前調(diào)用(this.setState方法調(diào)用會引起組件更新),這個方法中不能使用this.setState
  • componentDidUpdate--------當(dāng)組件已經(jīng)被更新完畢渲染到DOM后,可以做一些更新之后的相關(guān)操作

卸載


組件被銷毀階段只有一個方法

  • componentWillUnmount--------當(dāng)組件從DOM中被移除時執(zhí)行一次,可以在這里做一些必要的清理操作,例如清楚無效的定時器

以上就是組件生命周期相關(guān)的所有方法,需要注意的一點是render在組件第一次被掛載時執(zhí)行一次,而在組件更新階段當(dāng)shouldComponentUpdate方法返回true之后也會執(zhí)行,在這個方法里可以使用this.propsthis.state獲取組件的狀態(tài)與屬性,但是絕對不能在這個方法里使用this.setState改變組件狀態(tài)

最后編輯于
?著作權(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)容

  • 在React Native中使用組件來封裝界面模塊時,整個界面就是一個大的組件,開發(fā)過程就是不斷優(yōu)化和拆分界面組件...
    ITxiansheng閱讀 983評論 1 2
  • 在React Native中使用組件來封裝界面模塊時,整個界面就是一個大的組件,開發(fā)過程就是不斷優(yōu)化和拆分界面組件...
    朱_源浩閱讀 9,064評論 6 38
  • 若有一日自由 我要去西伯利亞的森林里 孤身死去 死在沒有人踏足的地方 野獸吞噬 風(fēng)雨分解 反哺土地 烈火中化為灰燼...
    小熊餅shaylyn閱讀 281評論 0 0
  • 陽光甚好 曬太陽不如好乘涼 不用大樹 我只有一副小身板 舒舒服服 旁邊有個小哥卻汗流浹背 哈哈隨他拍吧
    我是KiShua閱讀 256評論 14 3

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