React 18带来的新变化

React 18带来的新变化

简介

​ 2022年3月,react正式发布v18,在带来很多新特性的同时,也废弃了在ie上的兼容性,如果想在ie上继续使用,建议依然使用18以下版本。

​ 本文将对react18的新特性做概述。以及如何升级到react18版本做简单描述,或者可以去官网查看。

架构概述

​ react18无疑将Concurrent模式从unstable变更为stable模式,在使用createRoot即可实现基于fiber架构下的异步、可中断、可恢复渲染模式,无疑提高了浏览器渲染效率。大多特性也是基于Concurrent渲染模式下的新增。

那么,什么是Concurrent模式?

Concurrent是基于react v16版本以下的Stack Reconciler(栈调和)模式做的进一步改进。

在Stack Reconciler渲染模式下,react内部通过深度遍历虚拟DOM树来构建应用,并且这个过程是不可中断的,也就是说会持续占用主线程。倘若虚拟DOM树结构复杂,将会占用大量时间,这时候浏览器event时间线程、UI渲染线程都处于等待状态,导致页面卡死。这是灾难级的。

而Concurrent渲染模式,通过将渲染任务切分为多个子任务,通过优先级进行任务调度,实现异步渲染(这种情况真是和协程太像了)。从而实现渲染效率的提升。

实现方式也比较简单,这里直接贴上官方用法:

import {
    createRoot } from 'react-dom/client';

function HelloMessage({
     name }) {
   
  return <div>Hello {
   name}</div>;
}

const root = createRoot(document.getElementById('container'));
root.render(<HelloMessage name="Taylor" />);

说了这么多,究竟有哪些新特性,一睹为快!

自动批处理

react18以前,批处理是react针对多次更新组件内部state进行的一种优化,可以在适当时机,对state统一做一次state更新。但是这种机制只针对react中的事件机制。如果在setTimeOut、Promise、原声事件时,这种机制就会失效。如:

setTimeout(() => {
   
  setCount(c => c + 1);
  setFlag(f => !f);
  // React将针对setState渲染两次,即setState变为同步
}, 1000);

react18下,这种情况批处理机制依然有效:


                
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值