成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

以后沒有 React Concurrent Mode了

開發 前端
相信很多關注React的朋友都知道Concurrent Mode,他是React漸進升級策略的產物。本文讓我們一起了解React漸進升級策略的演進過程。

[[435400]]

大家好,我卡頌。

相信很多關注React的朋友都知道Concurrent Mode,他是React漸進升級策略的產物。

即然是策略,那就有可能調整,這不,根據What happened to concurrent mode?[1],在v18中將不會有Concurrent Mode了。

本文讓我們一起了解React漸進升級策略的演進過程。

React新老架構的區別

可以認為采用Fiber架構前的React只支持一種優先級:同步優先級,即所有更新是“同步、不可中斷”的形式。

采用Fiber架構后的React支持包括同步優先級在內的多種優先級,或者說新架構支持并發更新。

所以新架構可以模擬老架構的運行機制(即不開啟并發更新)。

當新架構開啟并發更新后,就能使用React為了解決CPU的瓶頸、IO的瓶頸而設計的并發特性(Concurrent Feature),比如:

  • useDeferredValue
  • useTransition
  • 全功能的Suspense

React所有版本可能的情況

當前所有React版本一定屬于如下情況之一:

  1. v15及之前的老架構
  2. v16之后的新架構,未開啟并發更新,與情況1行為一致
  3. v16之后的新架構,未開啟并發更新,但是啟用了一些新功能(比如Automatic Batching)
  4. v16之后的新架構,開啟并發更新

v16、v17默認屬于情況2。

之所以劃分多種情況,是因為情況4的React一些行為異于情況1、2、3(比如部分以componentWill開頭的生命周期函數的調用時機發生變化),也就是說開啟并發更新可能造成老代碼不兼容。

為了讓廣大開發者能夠平滑過渡,React團隊采用了「漸進升級」方案。

早期的漸進升級策略

v16.3新增了StrictMode,對開發者編寫的「不符合并發更新規范的代碼」作出提示,逐步引導開發者寫出規范代碼。

此時React團隊的「漸進升級」策略是:讓頁面中可以同時存在三種模式的應用,具體如下:

  1. Legacy模式,通過ReactDOM.render(, rootNode)創建的應用遵循該模式。默認關閉StrictMode,表現同情況2
  2. Blocking模式,通過ReactDOM.createBlockingRoot(rootNode).render()創建的應用遵循該模式,作為從Legacy向Concurrent過渡的中間模式,默認開啟StrictMode,表現同情況3
  3. Concurrent模式,通過ReactDOM.createRoot(rootNode).render()創建的應用遵循該模式,默認開啟StrictMode,表現同情況4

三種模式可用特性對比

在v17之前,大多數事件會冒泡到HTML元素,為了讓同一個頁面下不同應用獨立,v17之后事件會冒泡到應用所在根元素。

所以v17也被稱為「墊腳石」版本,他是為「開啟并發更新」做鋪墊的版本。

當前的漸進升級策略

但是,根據社區的反饋,React團隊意識到當前的「漸進升級」策略存在問題。

這三種模式影響的是整個應用,從Legacy升級到Blocking后,由于開啟StrictMode,整個應用的「并發不兼容警告」都會上報。從這個角度看,并沒有起到「漸進升級」的目的。

另一方面,開發者從新架構中獲益更多是由于使用了并發特性,即然新架構支持「開關并發更新」,完全可以在使用了并發特性后再開啟并發更新。這樣就只需在「使用了并發特性的組件」部分啟用StrictMode。

相比劃分三種模式,這種以「是否使用并發特性」作為是否開啟并發更新的依據,更符合「漸進升級」中「漸進」的理念。

所以在v18中,不再有三種模式,統一使用ReactDOM.createRoot(rootNode).render()創建應用。當不使用并發特性時,表現如情況3。使用并發特性后,表現如情況4。

總結

一句話總結:v18以后只會有并發特性,不會有并發模式。

作為一個發展了8年之久的前端框架,要想推進社區完成帶有breaking change的迭代升級,注定是困難的。

我們也看到了React團隊在此確實付出很多心血。

想問問各位,還學得動么?

參考資料

[1]What happened to concurrent mode?:

https://github.com/reactwg/react-18/discussions/64

 

責任編輯:姜華 來源: 魔術師卡頌
相關推薦

2020-11-06 13:25:38

React Concu

2019-04-15 14:17:28

iTunes蘋果macOS

2022-03-02 15:10:31

DateJavaScript前端

2023-05-11 08:13:01

ReactCanary版本

2020-10-19 10:25:57

ReactReact.js前端

2021-09-29 07:41:27

前端技術編程

2018-10-23 14:50:24

Linux操作系統Linus

2011-03-15 09:10:48

Concurrent

2024-07-08 00:00:07

2021-03-03 10:54:41

2022-12-13 10:37:45

數字化預測

2021-11-30 07:31:42

微信支付寶付款

2022-07-13 15:23:57

Vue fiberreact前端

2022-03-25 08:31:09

ReactReact 18升級

2019-04-02 10:39:42

WiFiLiFi5G

2015-10-15 15:02:48

2016-06-12 16:04:03

機器人編劇

2022-05-16 08:00:55

ReactReact 18數組

2024-02-05 21:48:25

VueReactHooks

2022-03-11 10:23:02

React性能優化
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品一区免费 | 国产高清久久 | 国产精品久久久久久久久免费丝袜 | 日韩欧美在 | 亚洲人在线 | 韩日一区二区 | 亚洲国产中文字幕 | 欧美精品一区三区 | 一区二区三区四区在线 | 亚洲精品视频在线播放 | 在线 丝袜 欧美 日韩 制服 | www.com久久久 | 在线成人免费av | 久久综合99 | 久久亚洲一区 | 欧美高清视频在线观看 | 欧美区日韩区 | 日韩日韩日韩日韩日韩日韩日韩 | 久久夜视频 | 伊人激情网 | 亚洲一区中文字幕 | 欧美精品一区二区三区在线播放 | www.亚洲.com | 久草a√| 91国产精品在线 | 夜夜草 | 日韩欧美在线播放 | 一区二区三区在线 | 91青娱乐在线 | av中文在线播放 | 精品欧美一区免费观看α√ | 色偷偷人人澡人人爽人人模 | 国产午夜精品久久久 | 四虎最新 | 不卡一区 | 涩涩视频网站在线观看 | 一级毛片大全免费播放 | 99re6热在线精品视频播放 | 成年网站在线观看 | 国产精品日韩欧美一区二区三区 | 午夜精品久久久久久久久久久久久 |