日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

生命周期 用户可以操作dom_React 生命周期的打怪升级之路

發布時間:2025/3/19 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 生命周期 用户可以操作dom_React 生命周期的打怪升级之路 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

號外號外!走過路過千萬不要錯過!

截止目前為止 React 已經發布了 v16.12.0 版本, React 生命周期也是日常開發低頭不見,抬頭見的狗子,可惜狗子它變了。

改變原因

v16.3 版本之前, React 中的更新操作是同步的,這可能會導致性能問題。

舉個例子,假如有一個龐大的模塊里面嵌套超級多的組件,一旦最頂部的 render 方法執行了,然后依次執行組件的 render 方法,直到最底層組件。這個過程會導致主線程卡主。

官方為了解決這個問題,因此引入了 React Fiber,其解決思路是分片執行,一個更新過程被分為兩個階段(Phase):第一個階段 Reconciliation Phase 和第二階段 Commit Phase。

在第一階段 Reconciliation Phase,React Fiber 會找出需要更新哪些 DOM,這個階段是可以被打斷的;但是到了第二階段 Commit Phase,那就一鼓作氣把 DOM 更新完,絕不會被打斷。

而這兩個階段也對應到不同的生命周期:

第一階段

  • componentWillMount
  • componentWillReceiveProps
  • shouldComponentUpdate
  • componentWillUpdate

第二階段

  • componentDidMount
  • componentDidUpdate
  • componentWillUnmount

可以看看這個例子:Fiber vs Stack Demo

變更對比

以前:

現在( v16.3 ):

對比上下兩張圖,發現 React 廢棄了以下方法:

  • componentWillMount
  • componentWillReceiveProps
  • componentWillUpdate

這里需要說明一下:為了做到版本版本兼容 增加 UNSAFE_componentWillMount,UNSAFE_componentWillReceiveProps和UNSAFE_componentWillUpdate方法,新舊方法都能使用,但使用舊方法,開發模式下會有紅色警告,在 React v17 更新時會徹底廢棄。

新增了方法如下:

  • getDerivedStateFromProps
  • getSnapshotBeforeUpdate

階段梳理

下面從三個階段(掛載、更新、卸載)梳理下生命周期方法。

constructor 構造函數

執行的生命周期方法,如果需要做一些初始化操作,比如初始化 state, 反正則無需為 React 組件實現構造函數。

getDerivedStateFromProps

當組件實例化的時候,這個方法替代了 componentWillMount(),而當接收到新的 props 時,該方法替代了 componentWillReceiveProps() 和 componentWillUpdate()。

static getDerivedStateFromProps(nextProps, prevState)

其中 v16.3 版本中 re-rendering 之后此方法不會被調用,而 v16.4 版本中 re-rendering 之后都會調用此方法,這意味及時的 props 未發生改變,一旦父組件發生 re-rendering 那么子組件的該方法依然會被調用。

componentWillMount/UNSAVE_componentWillMount (即將廢棄)

部分同學日常會把數據請求放在該方法內,以便于快速獲取數據并展現,我的理解再怎么快,也快不過首次 render,并且 React Fiber 執行機制的原因,會導致該方法被執行多次,這也意味著接口被請求多次。因此該方法在 v17 版本以后將被徹底廢棄。

componentDidMount

在組件掛載完成后調用,且全局只調用一次。可以在這里使用 refs,獲取真實 dom 元素。該鉤子內也可以發起異步請求,并在異步請求中可以進行 setState。

componentWillReceiveProps/UNSAFE_componentWillReceiveProps (即將廢棄)

被 getDerivedStateFromProps 方法取代。

shouldComponentUpdate

每次調用 setState 后都會調用 shouldComponentUpdate 判斷是否需要重新渲染組件。默認返回 true,需要重新 render。返回 false 則不觸發渲染。在比較復雜的應用里,有一些數據的改變并不影響界面展示,可以在這里做判斷,優化渲染效率。

componentWillUpdate

依舊是 React Fiber 執行機制的原因,在該方法記錄 DOM 狀態就不在準確了。

getSnapshotBeforeUpdate

觸發該方法的實際,是在更新 DOM 之前的一瞬間,比 componentWillUpdate 記錄的 DOM 狀態更為精確。

componentDidUpdate

除了首次 render 之后調用 componentDidMount,其它 render 結束之后都是調用 componentDidUpdate。

componentWillUnmount

組件被卸載的時候調用。一般在 componentDidMount 里面注冊的事件需要在這里刪除。

總結

由于 React 同步更新組件的原因,會引起性能問題,造成主線程卡死,因此引入 React Fiber 對核心算法的一次重新實現。 緊接著發現, React Fiber 會讓部分生命周期方法行多次,而廢除這部分方法,引入新方法。

參考文章:

React Fiber 是什么

React v16.3 之后的組件生命周期函數

淺談 React Fiber 及其對 lifecycles 造成的影響

講講今后 React 異步渲染帶來的生命周期變化

React 新舊生命周期的思考理解

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的生命周期 用户可以操作dom_React 生命周期的打怪升级之路的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美亚洲不卡 | 日韩精品一区二区亚洲av观看 | 国产女人高潮视频 | 日韩天堂在线 | 久久久久久中文字幕 | 亚洲av色香蕉一区二区三区 | 99热国| 免费在线观看亚洲 | av播放网站| 黄色aaa视频 | 日本不卡一区视频 | 欧美黄色三级 | 97精品一区二区视频在线观看 | 亚洲女优视频 | 中文字幕亚洲乱码熟女一区二区 | 天天爽夜夜爽夜夜爽 | 日韩中文在线观看 | 91蝌蚪九色 | 精品一区二区三区精华液 | 成人免费一区二区三区在线观看 | 欧美性受xxxx黑人xyx性爽 | 欧洲丰满少妇做爰 | 在线亚洲人成电影网站色www | av看片网站| 久热伊人 | 一起操在线 | 人人妻人人做人人爽 | 国产精品久久久久久免费免熟 | 成年人黄色免费视频 | 日本a一级 | 91 在线视频 | 亚洲激情欧美激情 | 精品无码在线观看 | 少妇毛片一区二区三区粉嫩av | 久久夜色精品国产噜噜亚洲av | 久久久久久久久久久久 | 成人综合一区 | 国产精品自拍在线观看 | 色片免费看 | 久久av综合网 | av片手机在线观看 | 欧美激情在线播放 | 久久久久亚洲AV成人网人人小说 | 久久精品国产一区二区三区 | 国产精品国产三级国产aⅴ无密码 | 男女洗澡互摸私密部位视频 | 五十路母| 久久久久久久久久免费 | 在线色资源 | 天堂色综合 | 国产精品老牛影院99av | 天堂一区二区三区四区 | 男生草女生视频 | 毛片导航 | av片网站 | 一级特黄妇女高潮2 | 亚洲综合p | 玩弄人妻少妇500系列 | 拍摄av现场失控高潮数次 | 久久桃色| 欧美大片一区 | 久久这里有精品视频 | 黄色免费在线观看视频 | 人人草人人干 | 手机看片午夜 | 五月婷婷六月丁香综合 | 丝袜美女被c | 国产色婷婷 | 亚洲第一精品网站 | 久久婷婷热 | 视频一区中文字幕 | 激情总合网 | 在线免费观看国产精品 | 国产黄色成人 | 日本不卡视频 | 国产黄色91 | 日本免费黄色 | 秘密基地在线观看完整版免费 | 亚洲国产成人久久 | 亚洲涩涩涩 | 日本欧美成人 | 青在线视频 | 欧美在线免费视频 | 久久久久久亚洲精品 | 亚洲美女福利视频 | 老鸭窝视频在线观看 | 亚洲av成人精品一区二区三区在线播放 | 亚洲精品一区二区潘金莲 | 91免费国产在线观看 | 校园春色综合网 | 欧美在线综合 | 国产又黄又猛 | 日本熟妇人妻xxxxx | 免费污网站在线观看 | 久久av无码精品人妻出轨 | 国产让女高潮的av毛片 | 久久久久久久久久免费 | 久草热播 | 91免费黄|