2024最新前端React面试题:React18相比react17有哪些主要更新?

news/2024/7/15 17:56:22 标签: react.js, 前端, javascript, 前端面试

React18相比react17有哪些主要更新?

  • 回答思路:1.setState和自动批处理-->2.新增root API--> 3.并发模式渲染-->4.不对IE浏览器支持-->5.react组件返回值更新-->6.strict mode更新-->7.react18支持useId-->8.-->Concurrent Mode-->扩展:什么是批量更新?什么是hydration(水合)
    • 1.setState和自动批处理
    • 2.新增rootAPI
    • 3.并发模式渲染
    • 4.不对IE浏览器支持
    • 5.react组件返回值更新
    • 6.strict mode更新
    • 7.react18支持useId
    • 8.Concurrent Mode
    • 扩展:什么是批量更新?什么是hydration(水合)
      • 批量更新?
      • hydration(水合)?

回答思路:1.setState和自动批处理–>2.新增root API–> 3.并发模式渲染–>4.不对IE浏览器支持–>5.react组件返回值更新–>6.strict mode更新–>7.react18支持useId–>8.–>Concurrent Mode–>扩展:什么是批量更新?什么是hydration(水合)

1.setState和自动批处理

在react17中只有react事件会进行批处理,原生js事件、promise、setTimeout、setInterval不会自动批处理,在react18中所有事件都进行批处理,多次setState会被合并为一次执行,提高了性能

2.新增rootAPI

新的root API,支持new concurrent renderer(并发模式的渲染)
在react18中这样创建根节点:
ReactDOM.createRoot(root).render()
对比代码如下:

javascript">//React 17
import React from "react"
import ReactDOM from "react-dom"
import App from "./App"

const root = document.getElementById("root")
ReactDOM.render(<App/>,root)

// 卸载组件
ReactDOM.unmountComponentAtNode(root)  

// React 18
import React from "react"
import ReactDOM from "react-dom/client"
import App from "./App"
const root = document.getElementById("root")
ReactDOM.createRoot(root).render(<App/>)

// 卸载组件
ReactDOM.unmountComponentAtNode(root)

3.并发模式渲染

React 18引入了新的并发渲染器,允许React在多个优先级级别上进行渲染,并根据浏览器的空闲时间来分配渲染任务,提高应用程序的响应能力和用户体验。

4.不对IE浏览器支持

不对IE浏览器支持,react18引入的新特性全部基于现代浏览器,如需支持需要退回到react17版本

5.react组件返回值更新

在17中,返回空组件只能返回null,显式返回undefined会报错
在18中,返回空组件可以返回null和undefined

6.strict mode更新

严格模式下,react会对每个组件返回两次渲染,以便于查看到一些可能发生的问题,在17中去掉了一次渲染的控制台日志,在18中又取消了这个限制,所以在18中还有有两次日志打印,第二次打印为浅灰色

7.react18支持useId

服务器和客户端生成相同的唯一一个id,避免hydrating的不兼容

javascript">import React from "react";
import { useId } from "react-id-generator";

const Component = () => {
  const [id] = useId();
  //生成唯一ID
  return <div>{id}</div>;
};

export default Component;

8.Concurrent Mode

Concurrent Mode为并发模式,是一个底层设计,它可以帮助应用保持响应,根据用户的设备性能和网速进行调整,通过渲染终端来修复阻塞渲染机制,在concurrent模式中,react可以同时更新多个状态。之前是同步渲染不可中断,18使同步不可中断的更新变成了异步可中断的更新

扩展:什么是批量更新?什么是hydration(水合)

批量更新?

多个状态更新操作合并为一个更新操作的机制。这种机制可以提高性能,减少不必要的重渲染,并优化渲染过程

hydration(水合)?

指在客户端将服务器端渲染的静态 HTML 内容转换为具有交互性的 React 组件树的过程


http://www.niftyadmin.cn/n/5289607.html

相关文章

Arduino中手写脉冲控制步进电机-2

目录 1、前言 2、时间-位移关系计算 3、Matlab计算时间和位置数据 (1)Matlab程序 &#xff08;2&#xff09;Arduino程序 4、Matlab生成Arduino电机正反转程序语句 &#xff08;1&#xff09;Arduino程序 &#xff08;2&#xff09;Matlab 命令行方式生成Arduino步进电…

城市自贸区/经开区/产业园基于EasyCVR视频技术的可视化、移动化、智能化视频监管方案

一、背景需求 移动互联网的发展激发了用户对轻应用的使用习惯。4G、5G使得无线带宽快速提升&#xff0c;令大流量视频数据流逐渐从PC往手持终端转移。借助智能手持终端也可以实时查看、远程控制、存储录像、抓拍图像&#xff0c;能方便快捷地掌握所关注区域的视频动态。 随着…

吴泳铭:“三位一体”重塑淘天

文 | 螳螂观察 作者 | 易不二 阿里组织接连变阵。 先是吴泳铭接替戴珊兼任淘天CEO&#xff0c;成为了淘天一号位&#xff0c;形成集团CEO同时担任淘天、阿里云一把手的“三位一体”模式。 对于这一安排&#xff0c;阿里官方表述&#xff0c;是希望以技术创新引领淘天的变革…

Python地理数据机器学习数学

地理数据 地理数据是存储在地理信息系统 (GIS) 中的位置信息。通过查看具有地理成分的数据&#xff0c;我们可以通过不同的视角来看待它。 用地理数据解决位置问题需要空间思维。让我们深入了解地理数据的类型、主题和来源。 类型 地理数据有不同类型&#xff0c;每种类型在…

canvas随机绘制100个五角星

canvas实例应用100 专栏提供canvas的基础知识&#xff0c;高级动画&#xff0c;相关应用扩展等信息。 canvas作为html的一部分&#xff0c;是图像图标地图可视化的一个重要的基础&#xff0c;学好了canvas&#xff0c;在其他的一些应用上将会起到非常重要的帮助。 文章目录 示例…

嵌入式开发——ARM介绍

ARM架构 ARM是一种芯片架构,由英国的ARM Holdings公司开发和授权,被广泛应用于各种嵌入式系统、移动设备和消费电子产品中。ARM架构被设计成低功耗、高性能、可定制化的特点,能够满足各种应用场景下的需求。 ARM架构主要设计了以下几个部分内容: 指令集架构(Instruction…

插入排序,选择排序,冒泡排序,顺序搜索,二分搜索,迭代,求最大公因数,最小公倍数等简单模板

目录 1.排序 1.插入排序模板 2.冒泡排序模板 3.选择排序模板 2.搜索 1.顺序搜索 2.二分搜索 3.迭代 1.基础迭代 ​编辑 4.求最大公因数&#xff0c;最小公倍数 1.最直接的方法 取巧一点 2.辗转相除法&#xff08;欧几里得法&#xff09; 1.排序 1.插入排序模板 插…

Mybatis-Plus基础之Mapper增删改

文章目录 一、普通增删改普通新增普通删除根据 entity 条件&#xff0c;删除记录根据 ID 批量删除根据 ID 删除根据 columnMap 条件&#xff0c;删除记录 普通修改根据 whereWrapper 条件&#xff0c;更新记录根据 ID 修改 二、insert ID 主键回填三、条件删除&#xff1a;使用…