<strike id="cy2gs"><menu id="cy2gs"></menu></strike>
  • <del id="cy2gs"><dfn id="cy2gs"></dfn></del>
  • 淺入 React 生命周期相關(guān)(二)更新生命周期

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

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


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

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

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

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

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

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

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

    相關(guān)鏈接:

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

    日歷

    鏈接

    個(gè)人資料

    存檔

    主站蜘蛛池模板: 日韩一区二区精品观看| 在线中文字幕精品第5页| 无码乱码观看精品久久| 久久国产精品一区二区| 四虎国产成人永久精品免费| 精品国产黑色丝袜高跟鞋| 999精品视频这里只有精品| 亚洲精品无码久久久久sm| 久草欧美精品在线观看| 嫩草影院久久国产精品| 国产suv精品一区二区33| 亚洲国产精品无码久久| 欧美精品一区二区三区免费| 91久久福利国产成人精品| 99国产欧美精品久久久蜜芽| 日产精品一线二线三线芒果| 亚洲欧美日韩精品久久亚洲区 | 精品免费视在线观看| 精品亚洲国产成AV人片传媒| 中文无码精品一区二区三区| 欧美日韩精品在线观看| 精品久久久久一区二区三区| 国产成人无码精品久久久免费| 久久99国产精品久久99| 成人区人妻精品一区二区不卡视频 | 国产精品尹人在线观看| 91精品国产91久久| 久久青草国产精品一区| 久久久久四虎国产精品| 久久精品一区二区国产| 真实国产乱子伦精品免费| 亚洲精品免费观看| 91精品国产综合久久四虎久久无码一级 | 亚洲精品成人a在线观看| 香蕉国产精品麻豆亚洲欧美日韩精品自拍欧美v国 | 精品精品国产自在久久高清| 99精品高清视频一区二区| 99久久免费国产精精品| 国产精品一久久香蕉国产线看| 99久久精品毛片免费播放| 国内精品久久久久久野外|