<em id="09ttv"></em>
    <sup id="09ttv"><pre id="09ttv"></pre></sup>
    <dd id="09ttv"></dd>

        • 淺入 React 生命周期相關(guān)(二)更新生命周期

          2019-6-13    seo達(dá)人

          如果您想訂閱本博客內(nèi)容,每天自動發(fā)到您的郵箱中, 請點(diǎn)這里


          更新階段分為兩部分 父組件執(zhí)行 render 或者調(diào)用 this.setState。

          componentWillReceiveProps
          大部分網(wǎng)上教程為外部 props 發(fā)生改變才觸發(fā) componentWillReceiveProps,其實(shí)不是,當(dāng)父組件進(jìn)入 render 時,無論子組件的 props 發(fā)沒發(fā)生改變,都會執(zhí)行該生命周期函數(shù)。 
          函數(shù)參數(shù)有一個,為 nextProps,為將要新的 props。 
          值得注意的是,在整個更新階段的生命周期函數(shù),只有在此函數(shù)內(nèi)可以調(diào)用 this.setState 方法,當(dāng)然其他也可以調(diào)用,但是會造成死循環(huán) 。

          shouldComponentUpdate
          該函數(shù)需要返回值,如沒定義則默認(rèn)返回 true。當(dāng)返回值為 true 時,進(jìn)入 componentWillIpdate ,如為 false ,則什么都不發(fā)生。所以說這是一個可以進(jìn)行 React 性能優(yōu)化的地方。函數(shù)參數(shù)有兩個 nextProps 和 nextState。我們需用做的就是在 this.props、this.state、nextState、nextProps之間進(jìn)行對比,來解決重復(fù)渲染的目的。

          componentWillUpdate
          如果 shouldComponentUpdate 返回值為 true 的話,生命周期會進(jìn)入該函數(shù)中。在這個函數(shù)中我們可以根據(jù)實(shí)際情況做一些事情,但是不能調(diào)用 this.setState。

          render
          在更新階段的 render 來講一講 調(diào)和 過程。 render 返回的 JSX 標(biāo)簽會保存在內(nèi)存中,react 會通過 diff 算法來計(jì)算出最小化改動完成差異的更新。diff 是逐層遞歸比較,首先比較類型是否一樣。如果發(fā)現(xiàn) <div>和 <span> 的差別的話,react 會選擇直接放棄之前的 dom 元素, 重新渲染。所以說即使是更新階段的調(diào)和過程,也會觸發(fā)組件的掛載、卸載階段。

          componentDidUpdate
          在這個時候已經(jīng)更新完 dom 結(jié)構(gòu),可以重新使用 dom 操作。

          總結(jié)
          總體來說更新的生命周期要做的最重要的事情就是性能優(yōu)化,減少重復(fù)渲染次數(shù)。 
          在這個方面已經(jīng)有很多成熟的解決方法了,在我的博客中也會介紹如何定制更新階段的生命周期函數(shù)。 
          在使用上,最最重要的一點(diǎn)就是不要在除了 componentWillReceiveProps 之外的其他更新階段生命周期函數(shù)內(nèi)調(diào)用 this.setState。

          相關(guān)鏈接:

          淺入 React 生命周期相關(guān)(一)掛載生命周期
          --------------------- 

          日歷

          鏈接

          個人資料

          存檔

          伊人久久精品影院| 国产精品一久久香蕉国产线看观看| 99久久婷婷免费国产综合精品| 久久婷婷五月综合国产尤物app| 亚洲国产另类久久久精品小说 | 日韩精品无码久久一区二区三| 久久久久综合国产欧美一区二区 | 欧美麻豆久久久久久中文| 思思久久精品在热线热| 久久久久人妻一区精品性色av| 久久伊人精品青青草原高清| 欧美一级久久久久久久大| 久久精品免费一区二区| 久久精品国产91久久综合麻豆自制| 久久久久噜噜噜亚洲熟女综合 | 欧美激情精品久久久久久久| 久久av无码专区亚洲av桃花岛| 色综合色天天久久婷婷基地| 老男人久久青草av高清| 91精品免费久久久久久久久| 亚洲欧洲日产国码无码久久99| 精品久久久无码中文字幕| 成人国内精品久久久久影院| 久久久久久精品免费看SSS| 欧美性猛交xxxx免费看久久久| 久久精品国产亚洲一区二区| 99精品久久久久久久婷婷| 日韩va亚洲va欧美va久久| 久久精品成人欧美大片| www.久久精品| 999久久久国产精品| 亚洲国产精品久久久久久| 国内精品伊人久久久久AV影院| 中文精品久久久久人妻不卡| 欧美精品丝袜久久久中文字幕 | 精品久久久无码中文字幕天天| 久久精品国产99国产精品澳门| 人妻精品久久无码区| 国产色综合久久无码有码| 久久这里有精品视频| 国产精品伦理久久久久久|