位置: IT常识 - 正文

React 18 特性(react 16新特性)

编辑:rootadmin
原文链接 2022 年 3 月 29 日,React 18 正式版发布了。 新增了以下这些新功能 Concurrent Mode 并发模式 在 CM 模式下,React 在执行过程中,每执行一个 Fiber,都会看看有没有更高优先级的更新,如果有,则当前低优先级的的更新会被暂停,待高优先级任务执行完 ...

推荐整理分享React 18 特性(react 16新特性),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:react17新增特性,react新特性,react16.8新特性,react 17,react18新特性,react18特性,react新特性17,react18特性,内容如对您有帮助,希望把文章链接给更多的朋友!

原文链接

2022 年 3 月 29 日,React 18 正式版发布了。

新增了以下这些新功能

Concurrent Mode 并发模式

在 CM 模式下,React 在执行过程中,每执行一个 Fiber,都会看看有没有更高优先级的更新,如果有,则当前低优先级的的更新会被暂停,待高优先级任务执行完之后,再继续执行或重新执行。

startTransition

React 的状态更新可以分为两类:

紧急更新(Urgent updates):比如打字、点击、拖动等,需要立即响应的行为,如果不立即响应会给人很卡,或者出问题了的感觉过渡更新(Transition updates):将 UI 从一个视图过渡到另一个视图。不需要即时响应,有些延迟是可以接受的。

默认的setState是紧急更新,startTransition包裹的setState是非紧急更新。React 会在高优先级更新渲染完成之后,才会启动低优先级更新渲染,并且低优先级渲染随时可被其它高优先级更新中断。

// 紧急的setInputValue(e.target.value);startTransition(() => { setSearchQuery(input); // 非紧急的});自动批处理 Automatic Batching

批处理是指 React 将多个状态更新,聚合到一次 render 中执行,以提升性能。

React 18 特性(react 16新特性)

在 React 18 之前,React 只会在事件回调中使用批处理,而在 Promise、setTimeout、原生事件等场景下,是不能使用批处理的。

而在 React 18 中,所有的状态更新,都会自动使用批处理,不关心场景。

function handleClick() { setCount(c => c + 1); setFlag(f => !f); // React 只会 re-render 一次,这就是批处理}setTimeout(() => { setCount(c => c + 1); setFlag(f => !f); // React 只会 re-render 一次,这就是批处理}, 1000);

如果你在某种场景下不想使用批处理,你可以通过 flushSync来强制同步执行

import { flushSync } from 'react-dom';function handleClick() { flushSync(() => { setCounter(c => c + 1); }); // React 更新一次 DOM flushSync(() => { setFlag(f => !f); }); // React 更新一次 DOM}

注意:自动批处理情况下在 Class 组件中,如果你在两次 setState 中间读取了 state 值,会出现不兼容的情况

// 不兼容handleClick = () => { setTimeout(() => { this.setState(({ count }) => ({ count: count + 1 })); // 在 React17 及之前,打印出来是 { count: 1, flag: false } // 在 React18,打印出来是 { count: 0, flag: false } console.log(this.state); this.setState(({ flag }) => ({ flag: !flag })); });};// 更改后兼容handleClick = () => { setTimeout(() => { ReactDOM.flushSync(() => { this.setState(({ count }) => ({ count: count + 1 })); }); // 在 React18,打印出来是 { count: 1, flag: false } console.log(this.state); this.setState(({ flag }) => ({ flag: !flag })); });};流式 SSR

SSR 一次页面渲染的流程大概为:

服务器 fetch 页面所需数据数据准备好之后,将组件渲染成 string 形式作为 response 返回客户端加载资源客户端合成(hydrate)最终的页面内容

而在 React 18 中,基于全新的 Suspense,支持了流式 SSR,也就是允许服务端一点一点的返回页面。

在 React 18 中,我们通过 Suspense包裹,可以告诉 React,我们不需要等这个组件,可以先返回其它内容,等这个组件准备好之后,单独返回。

更多关于流式 SSR 的讲解可见:https://github.com/reactwg/react-18/discussions/37

新 HooksuseDeferredValue

useDeferredValue 可以让一个 state 延迟生效,只有当前没有紧急更新时,该值才会变为最新值。useDeferredValue 和 startTransition 一样,都是标记了一次非紧急更新。

useId

支持同一个组件在客户端和服务端生成相同的唯一的 ID,避免 hydration 的不兼容。原理是每个 id 代表该组件在组件树中的层级结构。

useSyncExternalStore

useSyncExternalStore 能够让 React 组件在 Concurrent Mode 下安全地有效地读取外接数据源。在 Concurrent Mode 下,React 一次渲染会分片执行(以 fiber 为单位),中间可能穿插优先级更高的更新。假如在高优先级的更新中改变了公共数据(比如 redux 中的数据),那之前低优先的渲染必须要重新开始执行,否则就会出现前后状态不一致的情况。useSyncExternalStore 一般是三方状态管理库使用,一般我们不需要关注。

useInsertionEffect

这个 Hooks 只建议 css-in-js库来使用。这个 Hooks 执行时机在 DOM 生成之后,useLayoutEffect 生效之前,一般用于提前注入

本文链接地址:https://www.jiuchutong.com/zhishi/313160.html 转载请保留说明!

上一篇:vue3中使用scss加上scoped导致样式失效问题(vue动态修改scss变量)

下一篇:dedecms提示:Deprecated: __autoload() is deprecated, use spl_au(dedecms配置)

  • 微信通话如何自动录音(微信通话如何自动开启扬声器)

    微信通话如何自动录音(微信通话如何自动开启扬声器)

  • 苹果7能更新12.4吗(苹果7能更新到最新版本吗)

    苹果7能更新12.4吗(苹果7能更新到最新版本吗)

  • 网络状态是一条线(网络状态是一条虚线加实线)

    网络状态是一条线(网络状态是一条虚线加实线)

  • 3470和3570差距多少(3570比3470性能强多少)

    3470和3570差距多少(3570比3470性能强多少)

  • 微信如何彻底关闭朋友圈让别人看不到(微信如何彻底关闭朋友圈功能)

    微信如何彻底关闭朋友圈让别人看不到(微信如何彻底关闭朋友圈功能)

  • 云录制是什么(腾讯会议云录制是什么)

    云录制是什么(腾讯会议云录制是什么)

  • 怎么删除微信好友(怎么删除微信好友?华为)

    怎么删除微信好友(怎么删除微信好友?华为)

  • 显存频率8000与14000区别(显存频率14000mhz什么意思)

    显存频率8000与14000区别(显存频率14000mhz什么意思)

  • 苹果a1673是ipad几代(苹果a1673是ipad什么型号)

    苹果a1673是ipad几代(苹果a1673是ipad什么型号)

  • vga dvi hdmi的区别(vga和hdmi和dvi哪个效果好)

    vga dvi hdmi的区别(vga和hdmi和dvi哪个效果好)

  • 影响网速的因素有哪些(影响电脑网络的速度的因素)

    影响网速的因素有哪些(影响电脑网络的速度的因素)

  • rx580series什么版本(rx580几个版本)

    rx580series什么版本(rx580几个版本)

  • 邮件被退回对方还能收到吗(邮件被退回对方邮箱已满,显示发送成功)

    邮件被退回对方还能收到吗(邮件被退回对方邮箱已满,显示发送成功)

  • iphonexs什么时候上市的(iphone xs什么时候发售)

    iphonexs什么时候上市的(iphone xs什么时候发售)

  • 手机录像播放不出来(手机录像播放不出来怎么回事)

    手机录像播放不出来(手机录像播放不出来怎么回事)

  • 手机qq群匿名怎么设置(手机qq群匿名怎么关掉)

    手机qq群匿名怎么设置(手机qq群匿名怎么关掉)

  • qq如何免费送礼物(qq如何免费送礼物给好友)

    qq如何免费送礼物(qq如何免费送礼物给好友)

  • 知道手机号码怎么查抖音(知道手机号码怎么查对方名字)

    知道手机号码怎么查抖音(知道手机号码怎么查对方名字)

  • 抖音忘记账号密码怎么办(抖音账号密码忘记,记得抖音号)

    抖音忘记账号密码怎么办(抖音账号密码忘记,记得抖音号)

  • 手机怎么恢复拨号键(怎么恢复拨号)

    手机怎么恢复拨号键(怎么恢复拨号)

  • 滴滴行程单别人能查吗(行程单滴滴打车)

    滴滴行程单别人能查吗(行程单滴滴打车)

  • 苹果蓝牙耳机有定位吗(苹果蓝牙耳机有几款)

    苹果蓝牙耳机有定位吗(苹果蓝牙耳机有几款)

  • 苹果xsmax主号副号怎么设置(苹果xsmax主副卡怎么设置)

    苹果xsmax主号副号怎么设置(苹果xsmax主副卡怎么设置)

  • 手机卡欠费了能注销吗(手机卡欠费了能办第二张吗)

    手机卡欠费了能注销吗(手机卡欠费了能办第二张吗)

  • BIOS设置图解教程(AWARD BIOS和AMI BIOS)(bios设置技巧)

    BIOS设置图解教程(AWARD BIOS和AMI BIOS)(bios设置技巧)

  • C++ lower_bound/upper_bound用法解析

    C++ lower_bound/upper_bound用法解析

  • 关税的征收对象是贸易性商品,不包括
  • 做账报税简单吗
  • 公司账户转私人账户要多久时间
  • 个税申报人员多怎么申报
  • 税收滞纳金计税吗
  • 计提工资当月要结转吗?
  • 开具红字发票抵扣后如何退税?
  • 调试阶段是什么意思
  • 股东退股分红怎么拿回
  • 借款可以转注资款吗
  • 汇算清缴退税现金流量表
  • 金银首饰消费税怎么算
  • 有线电视基本收视维护费免征增值税
  • 公司自用房屋怎样交税
  • 业务招待费可以结转下年抵扣吗
  • 技术转让免征增值税
  • 财务费用属于什么会计科目类别
  • 托收凭证的会计科目
  • 计提成本账务处理
  • 房屋产权无偿赠与合同范本
  • 其他债券投资出售时交易费用
  • 货款打多了退款怎么做账
  • 投资者与被投资者的名人
  • word中的引号方向不对
  • 东芝t351笔记本
  • 工资只发一半
  • 公司注销帐上的钱取出来要交税吗
  • win11触摸板不能用
  • 员工出差补贴怎么入账
  • wordpress抓取网页
  • 设备租赁会计科目
  • php __destruct
  • 日本东京秋叶原攻略
  • php文件上传技术
  • uni-app介绍
  • 普票销售方信息不完整可以用吗
  • 若依框架前端如何通过后端加载页面
  • php上传文件类型
  • echarts怎么样
  • 关于出售使用过的东西
  • 账本登错的账务如何处理
  • 小微企业能申请留抵退税吗?
  • 代管资金如何做凭证
  • 认证发票可以分两次进行吗
  • 商贸公司库存商品有哪些
  • 挂靠的工程如何进行账务处理?
  • 公司购进软件的账务处理
  • 织梦cms可以商用吗
  • 物业公司电费最多可以收多少钱一度
  • 房地产企业将开发产品用于职工福利
  • 一般纳税人销售货物税率
  • 退税流程怎么操作个人所得税2022
  • 出口退税的会计处理例题
  • 集团公司一般怎么称呼
  • 什么情况下不能开税票
  • 个体工商户税种及税率
  • 农民专业合作社属于什么经济类型
  • 分公司可以在银行贴现吗
  • 一般纳税人企业所得税税率多少
  • 计提地税会计分录怎么做
  • 税法税前扣除
  • 小规模纳税人取得普通发票怎么做账
  • 增值税零税率发票怎么开
  • 房地产企业印花税计入什么科目
  • 宾馆纳税怎么算的
  • windows xp windows
  • Unity3D 事件
  • JS、jQuery中select的用法详解
  • Android shape画圆
  • 隐藏应用名字
  • javascript学习指南
  • python中fun函数怎么用
  • jquery实例
  • 海关编码查询 商品编码查询
  • 唐山宴订餐电话是多少
  • 福建地方税务局招聘
  • 小微企业 2018
  • 大连市国家税务网
  • 何为标兵称号
  • 税务筹划和纳税申报哪个更容易学
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设