亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

React18之狀態(tài)批處理的使用

 更新時(shí)間:2022年05月03日 10:58:55   作者:yjwlike  
本文主要介紹了React18之狀態(tài)批處理的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

react在3月29號正式發(fā)布了18版本, 此次更新包括: 狀態(tài)自動批處理, 客戶端渲染api的更新, 新的hook等很多變化, 本章先說一下狀態(tài)批處理的變化.

React v18.0 – React Blog

狀態(tài)自動批處理

18版本之前, 在合成事件之外的原生事件中(例如 setTimeout, onclick, promise) , 更新狀態(tài)并不會進(jìn)行批量處理(合并), 這意味著在原生事件中多次調(diào)用狀態(tài)更新會造成多次應(yīng)用的重新渲染, 往往我們只需要最后一次即可, react在18版本后優(yōu)化了這個(gè)問題

import { useState } from 'react'
 
function App() {
  const [num1, setNum1] = useState(1)
  const [num2, setNum2] = useState(1)
  const add = () => {
    setTimeout(() => {
      setNum1((pre) => pre + 1)
      setNum2((pre) => pre + 1)
    })
  }
  console.log('渲染了')
  return (
    <div className="App">
      <header className="App-header">react 18</header>
      <p>num1 : {num1}</p>
      <p>num2 : {num2}</p>
      <button onClick={add}>+1</button>
    </div>
  )
}
 
export default App

17版

點(diǎn)擊四下后,組件渲染了8次

 18版

點(diǎn)擊4下后, 組件渲染了4次

 退出狀態(tài)自動批處理

在某些場景下 我們可能不需要批處理狀態(tài)更新, 此時(shí)我們需要用到 react-dom 提供的flushSync函數(shù), 該函數(shù)需傳入一個(gè)回調(diào), 并且會同步刷新回調(diào)中的狀態(tài)更新

import { useState } from 'react'
import { flushSync } from 'react-dom'
 
function App() {
  const [num1, setNum1] = useState(1)
  const [num2, setNum2] = useState(1)
  const add = () => {
    setTimeout(() => {
      flushSync(() => {
        setNum1((pre) => pre + 1)
      })
      flushSync(() => {
        setNum2((pre) => pre + 1)
      })
    })
  }
  console.log('渲染了')
  console.log(num1, num2)
  return (
    <div className="App">
      <header className="App-header">react 18</header>
      <p>num1 : {num1}</p>
      <p>num2 : {num2}</p>
      <button onClick={add}>+1</button>
    </div>
  )
}
 
export default App

 要點(diǎn)概述

1. 原生事件內(nèi)狀態(tài)更新改為批量處理

2. 不需要批量處理時(shí) 使用 react-dom 提供的flushSync函數(shù), 此函數(shù)同步刷新參數(shù)回調(diào)內(nèi)的狀態(tài)更新

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

相關(guān)文章

  • react實(shí)現(xiàn)可播放的進(jìn)度條

    react實(shí)現(xiàn)可播放的進(jìn)度條

    這篇文章主要為大家詳細(xì)介紹了react實(shí)現(xiàn)可播放的進(jìn)度條,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • React中嵌套組件與被嵌套組件的通信過程

    React中嵌套組件與被嵌套組件的通信過程

    這篇文章主要介紹了React中嵌套組件與被嵌套組件的通信過程,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-07-07
  • 詳解React開發(fā)必不可少的eslint配置

    詳解React開發(fā)必不可少的eslint配置

    本篇文章主要介紹了詳解React開發(fā)必不可少的eslint配置,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-02-02
  • React三大屬性之props的使用詳解

    React三大屬性之props的使用詳解

    這篇文章主要介紹了React三大屬性之props的使用詳解,幫助大家更好的理解和學(xué)習(xí)使用React,感興趣的朋友可以了解下
    2021-04-04
  • react實(shí)現(xiàn)頭部導(dǎo)航,選中狀態(tài)底部出現(xiàn)藍(lán)色條塊問題

    react實(shí)現(xiàn)頭部導(dǎo)航,選中狀態(tài)底部出現(xiàn)藍(lán)色條塊問題

    這篇文章主要介紹了react實(shí)現(xiàn)頭部導(dǎo)航,選中狀態(tài)底部出現(xiàn)藍(lán)色條塊問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • react表單受控的實(shí)現(xiàn)方案

    react表單受控的實(shí)現(xiàn)方案

    數(shù)據(jù)的受控控制一直是react里的一個(gè)痛點(diǎn),當(dāng)我想要實(shí)現(xiàn)一個(gè)輸入框的受控控制時(shí),我需要定義一個(gè)onChange和value,手動去實(shí)現(xiàn)數(shù)據(jù)的綁定,本文小編給大家介紹了react表單受控的實(shí)現(xiàn)方案,需要的朋友可以參考下
    2023-12-12
  • React Hook 父子組件相互調(diào)用函數(shù)方式

    React Hook 父子組件相互調(diào)用函數(shù)方式

    這篇文章主要介紹了React Hook 父子組件相互調(diào)用函數(shù)方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • React實(shí)現(xiàn)動效彈窗組件

    React實(shí)現(xiàn)動效彈窗組件

    最近在使用react開發(fā)項(xiàng)目,遇到這樣一個(gè)需求實(shí)現(xiàn)一個(gè)帶有動效的 React 彈窗組件,如果不考慮動效,很容易實(shí)現(xiàn),接下來小編通過本文給大家介紹React實(shí)現(xiàn)動效彈窗組件的實(shí)現(xiàn)代碼,一起看看吧
    2021-06-06
  • D3.js(v3)+react 實(shí)現(xiàn)帶坐標(biāo)與比例尺的柱形圖 (V3版本)

    D3.js(v3)+react 實(shí)現(xiàn)帶坐標(biāo)與比例尺的柱形圖 (V3版本)

    這篇文章主要介紹了D3.js(v3)+react 制作 一個(gè)帶坐標(biāo)與比例尺的柱形圖 (V3版本) ,本文通過實(shí)例代碼文字相結(jié)合的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2019-05-05
  • 如何在React?Native開發(fā)中防止滑動過程中的誤觸

    如何在React?Native開發(fā)中防止滑動過程中的誤觸

    在使用React?Native開發(fā)的時(shí),當(dāng)我們快速滑動應(yīng)用的時(shí)候,可能會出現(xiàn)誤觸,導(dǎo)致我們會點(diǎn)擊到頁面中的某一些點(diǎn)擊事件,誤觸導(dǎo)致頁面元素響應(yīng)從而進(jìn)行其他操作,表現(xiàn)出非常不好的用戶體驗(yàn)。
    2023-05-05

最新評論