最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

React18新增特性released的使用

 更新時間:2022年05月03日 10:41:40   作者:最新技術(shù)  
本文主要介紹了React18新增特性released的使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧

React 18 中的新增功能

新功能:Automatic Batching

批處理是指 React 將多個狀態(tài)更新分組到單個重新呈現(xiàn)中以獲得更好的性能。在沒有自動批處理的情況下,我們只在 React 事件處理程序中批處理更新。默認情況下,promises、setTimeout、本機事件處理程序或任何其他事件內(nèi)部的更新不會在 React 中進行批處理。使用自動批處理時,將自動批處理這些更新:

// Before: only React events were batched.
setTimeout(() => {
? setCount(c => c + 1);
? setFlag(f => !f);
? // React will render twice, once for each state update (no batching)
}, 1000);

// After: updates inside of timeouts, promises,
// native event handlers or any other event are batched.`
setTimeout(() => {
? setCount(c => c + 1);
? setFlag(f => !f);
? // React will only re-render once at the end (that's batching!)
}, 1000);

新功能:Transitions

Transitions是 React 中的一個新概念,用于區(qū)分緊急和非緊急更新。

緊急更新反映了直接交互,如打字、單擊、按下等。

過渡更新將 UI 從一個視圖轉(zhuǎn)換為另一個視圖。

緊急更新,如打字,點擊或按下,需要立即響應(yīng),以匹配我們對物理對象行為方式的直覺。否則他們會覺得"錯了"。但是,過渡是不同的,因為用戶不希望在屏幕上看到每個中間值。

例如,當您在下拉列表中選擇篩選器時,您希望篩選器按鈕本身在單擊時立即響應(yīng)。但是,實際結(jié)果可能會單獨轉(zhuǎn)換。一個小小的延遲是難以察覺的,而且往往是意料之中的。如果在結(jié)果渲染完成之前再次更改濾鏡,則只需查看最新結(jié)果即可。

通常,為了獲得最佳用戶體驗,單個用戶輸入應(yīng)同時導(dǎo)致緊急更新和非緊急更新。您可以在輸入事件中使用 startTransition API 來通知 React 哪些更新是緊急的,哪些是"轉(zhuǎn)換":

import {startTransition} from 'react';

// Urgent: Show what was typed
setInputValue(input);

// Mark any state updates inside as transitions
startTransition(() => {
? // Transition: Show the results
? setSearchQuery(input);
});

startTransition 中包裝的更新將作為非緊急更新進行處理,如果出現(xiàn)更緊急的更新(如單擊或按鍵),則會中斷。如果一個過渡被用戶打斷(例如,通過連續(xù)鍵入多個字符),React 將拋出未完成的陳舊的渲染工作,只渲染最新的更新。

useTransition:用于啟動轉(zhuǎn)換的掛鉤,包括用于跟蹤掛起狀態(tài)的值。

startTransition:一種在無法使用掛鉤時啟動轉(zhuǎn)換的方法。

轉(zhuǎn)換將選擇加入并發(fā)渲染,從而允許中斷更新。如果內(nèi)容重新掛起,過渡還會告訴 React 繼續(xù)顯示當前內(nèi)容,同時在后臺呈現(xiàn)過渡內(nèi)容(有關(guān)詳細信息,請參閱懸念 RFC)。

在此處查看有關(guān)過渡的文檔.

新的Suspense功能

Suspense 允許您以聲明方式指定組件樹的某個部分的加載狀態(tài)(如果該部分尚未準備好顯示):

<Suspense fallback={<Spinner />}>
  <Comments /></Suspense>

Suspense 使"UI 加載狀態(tài)"成為 React 編程模型中的第一類聲明性概念。這使我們能夠在其上構(gòu)建更高級別的功能。

幾年前,我們推出了限量版的懸疑。但是,唯一受支持的用例是使用 React.lazy 進行代碼拆分,并且在服務(wù)器上渲染時根本不支持。

在 React 18 中,我們在服務(wù)器上添加了對 Suspense 的支持,并使用并發(fā)渲染功能擴展了其功能。

React 18 中的懸念在與過渡 API 結(jié)合使用時效果最佳。如果在轉(zhuǎn)換期間掛起,React 將阻止已經(jīng)可見的內(nèi)容被回退替換。相反,React 將延遲渲染,直到加載了足夠的數(shù)據(jù)以防止錯誤的加載狀態(tài)。

新的客戶端和服務(wù)器Rendering APIs

在此版本中,我們借此機會重新設(shè)計了用于在客戶端和服務(wù)器上呈現(xiàn)的 API。這些更改允許用戶在升級到 React 18 中的新 API 時,在 React 17 模式下繼續(xù)使用舊 API。

React DOM Client

這些新的 API 現(xiàn)在從 react-dom/client 導(dǎo)出:

createRoot:用于創(chuàng)建要render或unmount的根的新方法。使用它而不是 ReactDOM.render。React 18 中的新功能沒有它就無法正常工作。

hydrateRoot:凍結(jié)服務(wù)器呈現(xiàn)的應(yīng)用程序的新方法。將它而不是 ReactDOM.hydrate 與新的 React DOM Server API 結(jié)合使用。React 18 中的新功能沒有它就無法正常工作。

createRoot 和 hydrateRoot 都接受一個名為 onRecoverableError 的新選項,以防您希望在 React 從渲染或用于日志記錄的水化錯誤中恢復(fù)時收到通知。默認情況下,React 將在較舊的瀏覽器中使用 reportError 或 console.error。

React DOM Server

這些新的 API 現(xiàn)在從 react-dom/server 導(dǎo)出,并且完全支持服務(wù)器上的流式 Suspense:

renderToPipeableStream:用于在 Node 環(huán)境中進行流式處理。

renderToReadableStream:適用于現(xiàn)代邊緣運行時環(huán)境,如 Deno 和 Cloudflare worker。

現(xiàn)有的 renderToString 方法繼續(xù)工作,但不鼓勵使用。

新的Strict Mode Behaviors

以后我們希望添加一個功能,允許 React 在保留狀態(tài)的同時添加和刪除 UI 的各個部分。例如,當用戶離開屏幕并返回時,React 應(yīng)該能夠立即顯示上一個屏幕。為此,React 將使用與以前相同的組件狀態(tài)卸載和重新掛載樹。

此功能將為 React 應(yīng)用程序提供更好的開箱即用性能,但要求組件能夠靈活應(yīng)對多次裝載和破壞的效果。大多數(shù)效果無需任何更改即可工作,但有些效果假定它們只安裝或銷毀一次。

為了幫助解決這些問題,React 18 在嚴格模式下引入了一個新的僅限開發(fā)的檢查。每當組件首次裝載時,此新檢查將自動卸載并重新裝載每個組件,并在第二次裝載時恢復(fù)以前的狀態(tài)。

在此更改之前,React 將掛載組件并創(chuàng)建效果:

React mounts the component.

  • Layout effects are created.
  • Effects are created.

在 React 18 中的嚴格模式中,React 將模擬在開發(fā)模式下卸載和重新掛載組件:

React mounts the component.

  • Layout effects are created.
  • Effects are created.

React simulates unmounting the component.

  • Layout effects are destroyed.
  • Effects are destroyed.

React simulates mounting the component with the previous state.

  • Layout effects are created.
  • Effects are created.

新Hooks

useId

useId 是一個新的鉤子,用于在客戶端和服務(wù)器上生成唯一 ID,同時避免水化不匹配。它主要用于與需要唯一 ID 的輔助功能 API 集成的組件庫。這解決了 React 17 及更低版本中已經(jīng)存在的問題,但在 React 18 中更為重要,因為新的流式處理服務(wù)器呈現(xiàn)器如何無序地交付 HTML。

useTransition

useTransition 和 startTransition 允許您將某些狀態(tài)更新標記為不緊急。默認情況下,其他狀態(tài)更新被視為緊急。React 將允許緊急狀態(tài)更新(例如,更新文本輸入)以中斷非緊急狀態(tài)更新(例如,呈現(xiàn)搜索結(jié)果列表)。

useDeferredValue

useDeferredValue 允許您推遲重新呈現(xiàn)樹的非緊急部分。它類似于去抖動,但與它相比具有一些優(yōu)點。沒有固定的時間延遲,所以 React 會在第一個渲染反映在屏幕上后立即嘗試延遲渲染。延遲的渲染是可中斷的,并且不會阻止用戶輸入。

useSyncExternalStore

useSyncExternalStore 是一個新的掛鉤,它允許外部存儲通過強制對存儲的更新進行同步來支持并發(fā)讀取。在實現(xiàn)對外部數(shù)據(jù)源的訂閱時,它消除了對 useEffect 的需求,并且建議用于與 React 外部的狀態(tài)集成的任何庫。

注意:useSyncExternalStore 旨在供庫使用,而不是應(yīng)用程序代碼。

useInsertionEffect

useInsertionEffect 是一個新的鉤子,它允許 CSS-in-JS 庫解決在渲染中注入樣式的性能問題。除非你已經(jīng)構(gòu)建了一個CSS-in-JS庫,否則我們不希望你使用它。此掛鉤將在 DOM 發(fā)生突變后運行,但在布局效果讀取新布局之前運行。這解決了 React 17 及更低版本中已經(jīng)存在的問題,但在 React 18 中更為重要,因為 React 在并發(fā)渲染期間讓位于瀏覽器,使其有機會重新計算布局。

注意:useInsertionEffect 旨在供庫使用,而不是應(yīng)用程序代碼。

到此這篇關(guān)于React18新增特性released的使用的文章就介紹到這了,更多相關(guān)React18 released內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • react-native彈窗封裝的方法

    react-native彈窗封裝的方法

    這篇文章主要為大家詳細介紹了react-native彈窗封裝的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • react路由配置方式詳解

    react路由配置方式詳解

    本篇文章主要介紹了react路由配置方式詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • React Hooks核心原理深入分析講解

    React Hooks核心原理深入分析講解

    這篇文章主要介紹了react hooks實現(xiàn)原理,文中給大家介紹了useState dispatch 函數(shù)如何與其使用的 Function Component 進行綁定,節(jié)后實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2022-12-12
  • React代碼分割的實現(xiàn)方法介紹

    React代碼分割的實現(xiàn)方法介紹

    雖然一直有做react相關(guān)的優(yōu)化,按需加載、dll 分離、服務(wù)端渲染,但是從來沒有從路由代碼分割這一塊入手過,所以下面這篇文章主要給大家介紹了關(guān)于React中代碼分割的方式,需要的朋友可以參考下
    2022-12-12
  • React簡單介紹

    React簡單介紹

    React 是一個用于構(gòu)建用戶界面的 JavaScript 庫,主要用于構(gòu)建 UI,而不是一個 MVC 框架,React 擁有較高的性能,代碼邏輯非常簡單,越來越多的人已開始關(guān)注和使用它
    2017-05-05
  • React進階學(xué)習之組件的解耦之道

    React進階學(xué)習之組件的解耦之道

    這篇文章主要給大家介紹了關(guān)于React進階之組件的解耦之道,文中通過詳細的示例代碼給大家介紹了組件分割與解耦的方法,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面跟著小編來一起學(xué)習學(xué)習吧。
    2017-08-08
  • react+ts實現(xiàn)簡單jira項目的最佳實踐記錄

    react+ts實現(xiàn)簡單jira項目的最佳實踐記錄

    這篇文章主要介紹了react+ts實現(xiàn)簡單jira項目,本文通過圖文實例相結(jié)合給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-07-07
  • React報錯Too many re-renders解決

    React報錯Too many re-renders解決

    這篇文章主要為大家介紹了React報錯Too many re-renders解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • create-react-app常用自定義配置教程示例

    create-react-app常用自定義配置教程示例

    這篇文章主要為大家介紹了create-react-app常用自定義配置教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • D3.js(v3)+react 實現(xiàn)帶坐標與比例尺的散點圖 (V3版本)

    D3.js(v3)+react 實現(xiàn)帶坐標與比例尺的散點圖 (V3版本)

    散點圖(Scatter Chart),通常是一橫一豎兩個坐標軸,數(shù)據(jù)是一組二維坐標,分別對應(yīng)兩個坐標軸,與坐標軸對應(yīng)的地方打上點。由此可以猜到,需要的元素包括circle(圓)和axis(坐標軸),接下來通過本文大家分享D3.js(v3)+react 實現(xiàn)帶坐標與比例尺的散點圖 (V3版本) ,一起看看
    2019-05-05

最新評論

肇州县| 焦作市| 海城市| 通辽市| 沙河市| 邓州市| 正蓝旗| 新化县| 浙江省| 霍林郭勒市| 凤翔县| 渑池县| 仙居县| 连江县| 临漳县| 永丰县| 科尔| 陇川县| 盐边县| 宁明县| 富源县| 叙永县| 闽清县| 临朐县| 江山市| 双辽市| 威宁| 青冈县| 屯门区| 迁西县| 阜平县| 石台县| 淄博市| 陆河县| 梁平县| 晋江市| 尚志市| 翼城县| 鹤峰县| 元阳县| 神农架林区|