午夜勾魂曲-午夜福利自怕-午夜福利在线观看6080-午夜福利院电影-国产精品毛片AV久久97-国产精品麻豆高潮刺激A片

淺入 React 生命周期相關(二)更新生命周期

2019-6-13    seo達人

如果您想訂閱本博客內容,每天自動發到您的郵箱中, 請點這里


更新階段分為兩部分 父組件執行 render 或者調用 this.setState。

componentWillReceiveProps
大部分網上教程為外部 props 發生改變才觸發 componentWillReceiveProps,其實不是,當父組件進入 render 時,無論子組件的 props 發沒發生改變,都會執行該生命周期函數。 
函數參數有一個,為 nextProps,為將要新的 props。 
值得注意的是,在整個更新階段的生命周期函數,只有在此函數內可以調用 this.setState 方法,當然其他也可以調用,但是會造成死循環 。

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

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

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

componentDidUpdate
在這個時候已經更新完 dom 結構,可以重新使用 dom 操作。

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

相關鏈接:

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

日歷

鏈接

個人資料

藍藍設計的小編 http://www.gerard.com.cn

存檔

主站蜘蛛池模板: 村上里沙快播 | 果冻传媒2021在线观看 | 狠狠色香婷婷久久亚洲精品 | 亚洲 综合 自拍 精品 在线 | 亚洲欧洲无码AV在线观看你懂的 | 在线精彩视频在线观看免费 | 北条麻妃夫の友人196 | 亚洲精品国产自在现线最新 | 激情内射亚州一区二区三区爱妻 | 亚洲精品国产AV成人毛片 | 中俄两军在日本海等上空战略巡航 | 亚洲精品视频观看 | 忘忧草日本在线WWW日本 | 日本邪恶少女漫画大全 | 偷窥自拍性综合图区 | 国产在线精品亚洲 | 亚洲欧美中文日韩视频 | YELLOW视频在线观看最新 | 久久99re热在线播放7 | 开心色99xxxx开心色 | 亚洲高清在线天堂精品 | 欧美精品乱码99久久蜜桃 | 消息称老熟妇乱视频一区二区 | 人妻免费久久久久久久了 | 69久久国产精品热88人妻 | 蜜柚在线观看免费高清官网视频 | 捆绑白丝粉色JK震动捧喷白浆 | 久久久无码精品亚洲A片猫咪 | 国产精品99久久久久久AV | 久久综久久美利坚合众国 | 欧洲内射XXX高清 | 99热精品在线av播放 | 综合色中色 | 97影院理论午夜伦不卡偷 | 国精产品一区二区三区有限公司 | 极品美女久久久久久久久久久 | 日本亚洲精品无码区国产电影 | 最新中文字幕在线视频 | 伊人影院久久 | 四虎视频最新视频在线观看 | 人体内射精一区二区三区 |