当前位置: 首页 > news >正文

React 18

文章目录

  • React 18
      • 自动批处理
      • 并发特性
      • Suspense 组件增强
      • 新 Hooks
      • createRoot API 替代 ReactDOM.render
      • Strict Mode严格模式
      • 服务器端渲染改进
      • 性能优化

React 18

React 18 引入了一系列新特性和改进,旨在提升性能、改善用户体验,并简化开发流程。以下是 React 18 与之前版本的主要区别:
React 18 引入了一系列新特性,旨在提升性能、改善用户体验,并简化开发流程。以下是对 React 18 新增功能的详细解析:

自动批处理

  • 功能:自动批处理是 React 18 中的一项重要功能,它允许在异步函数中(如 setTimeoutPromise 回调)自动合并多个状态更新,从而减少重新渲染的次数,提高应用性能。
  • 示例
function handleClick() {setTimeout(() => {setState1((prev) => prev + 1);setState2((prev) => prev + 1);}, 1000);
}

在 React 18 中,setState1setState2 的更新会被合并到一个批处理中,只导致一次重新渲染。

并发特性

  • 功能:并发特性允许 React 在渲染过程中中断和恢复任务,从而更好地响应用户交互。通过 startTransition API,开发者可以标记某些非紧急的更新,使其在主线程空闲时处理。
  • 示例
import { startTransition } from 'react';function handleInputChange(e) {startTransition(() => {setInput(e.target.value);});
}

Suspense 组件增强

  • 功能:Suspense 组件在 React 18 中得到了进一步优化,它允许在组件等待异步数据加载时展示占位 UI,提升用户体验。
  • 示例
<Suspense fallback={<Spinner />}><Comments />
</Suspense>

新 Hooks

React 18 引入了一些新的 Hooks,如 useIduseTransitionuseDeferredValueuseSyncExternalStoreuseInsertionEffect,提供了更多功能。

  • useTransition:用于处理非紧急状态更新,允许将状态更新标记为“过渡”状态,以便在不阻塞用户交互的情况下进行处理。
  • useDeferredValue:将某个值标记为可以延迟的值,从而在高频率的操作中不会导致卡顿。

createRoot API 替代 ReactDOM.render

  • 功能:React 18 推荐使用 createRoot 替代 ReactDOM.render 来渲染根组件,从而启用并发模式。
  • 示例
import { createRoot } from 'react-dom/client';const root = createRoot(document.getElementById('root'));
root.render(<App />);

Strict Mode严格模式

  • 功能:React 18 中的 Strict Mode 会对某些生命周期方法(例如 useEffect 的回调函数)进行双重调用,以帮助开发者检测潜在的副作用问题,提高应用的健壮性。

服务器端渲染改进

  • 功能:React 18 对服务器端渲染中的 <Suspense> 组件提供了支持,允许在加载完部分内容后就开始流式地返回 HTML 片段,提高首屏加载速度。

性能优化

React 18 通过并发模式、自动批处理、新的事件体系等特性,显著提升了应用的性能和响应性。

通过这些改进,React 18 不仅提升了性能,还简化了开发流程,为开发者提供了更强大的工具来构建高效、稳定的应用。

相关文章:

React 18

文章目录 React 18自动批处理并发特性Suspense 组件增强新 HookscreateRoot API 替代 ReactDOM.renderStrict Mode严格模式服务器端渲染改进性能优化 React 18 React 18 引入了一系列新特性和改进&#xff0c;旨在提升性能、改善用户体验&#xff0c;并简化开发流程。以下是 R…...

Java:集合(List、Map、Set)

文章目录 1. Collection集合1-1. 迭代器遍历方式1-2. 通过for循环进行遍历1-3. forEach遍历 2. List集合2-1. ArrayList底层实现原理2-2. LinkedList底层实现原理 3. Set集合3-1. HashSet 底层实现3-2. LinkedHashSet 底层实现3-3. TreeSet 4. Collection集合->总结5. Map集…...

使用秘钥登录服务器

在我们测试或生产环境中&#xff0c;为了服务器安全性&#xff0c;有时可能需要以 SSH 密钥的方式登录服务器&#xff0c;接下来&#xff0c;将演示如何通过 SSH 私钥的方式来远程服务器。 一、远程服务器生成密钥对 1、首先在目标远程服务器下生成 SSH 密钥对 ssh-keygen然…...

BFS算法题

目录 1.BFS 2.树里的宽搜 题目一——429. N 叉树的层序遍历 - 力扣&#xff08;LeetCode&#xff09; 题目二——103. 二叉树的锯齿形层序遍历 - 力扣&#xff08;LeetCode&#xff09; 题目三——662. 二叉树最大宽度 - 力扣&#xff08;LeetCode&#xff09; 题目四——…...

网络应用技术 实验八:防火墙实现访问控制(华为ensp)

目录 一、实验简介 二、实验目的 三、实验需求 四、实验拓扑 五、实验步骤 1、设计全网 IP 地址 2、设计防火墙安全策略 3、在 eNSP 中部署园区网 4、配置用户主机地址 5、配置网络设备 配置交换机SW-1~SW-5 配置路由交换机RS-1~RS-5 配置路由器R-1~R-3 6、配置仿…...

嵌入式现状、机遇、挑战与展望

在当今数字化浪潮中&#xff0c;嵌入式系统宛如一颗璀璨的明珠&#xff0c;熠熠生辉&#xff0c;深刻地渗透到了我们生活的方方面面&#xff0c;成为推动现代科技进步不可或缺的关键力量。从智能家居的便捷控制&#xff0c;到工业生产的精准运作&#xff0c;再到汽车的智能驾驶…...

天通卫星卡通知短信模板

文章目录 引言I 阿里云新增短信模板短信模板通知短信变量规范计费规则: 短信长度不超过70个字,按照1条短信计费;II 表设计III 实现方案引言 背景:天通卡适用于应急救灾、登山探险、海上通信、野外作业等需要稳定可靠通信的场景。 需求:天通卡充值成功通知 平台基于阿里云给…...

Unity WebGL 编译和打包说明(官方文档翻译校正)

目录 Unity WebGL 编译和打包说明WebGL 简介WebGL 浏览器兼容性 (WebGL Browser Compatibility)平台支持 (Platform Support)多线程支持限制多线程支持的因素安装 Unity Hub 并添加所需模块WebGL 开发WebGL Player 设置Resolution and PresentationResolutionWebGL TemplateSpl…...

题解 - 取数排列

题目描述 取1到N共N个连续的数字&#xff08;1≤N≤9&#xff09;&#xff0c;组成每位数不重复的所有可能的N位数&#xff0c;按从小到大的顺序进行编号。当输入一个编号M时&#xff0c;就能打印出与该编号对应的那个N位数。例如&#xff0c;当N&#xff1d;3时&#xff0c;可…...

JAVA实战:借助阿里云实现短信发送功能

亲爱的小伙伴们&#x1f618;&#xff0c;在求知的漫漫旅途中&#xff0c;若你对深度学习的奥秘、JAVA 、PYTHON与SAP 的奇妙世界&#xff0c;亦或是读研论文的撰写攻略有所探寻&#x1f9d0;&#xff0c;那不妨给我一个小小的关注吧&#x1f970;。我会精心筹备&#xff0c;在…...

高阶函数:JavaScript 编程中的魔法棒

在JavaScript的世界里&#xff0c;高阶函数是一种强大的工具&#xff0c;它允许我们将函数作为参数传递或将函数作为返回值。这种特性使得JavaScript代码更加灵活和强大。本文将深入探讨高阶函数的定义、用法以及在实际项目中的最佳实践&#xff0c;帮助大家更好地理解和应用这…...

Android 12.0 Launcher3从首页开始安装app功能实现

1.前言 在12.0的系统rom定制化开发中,在进行Launcher3的某些功能开发实现过程中,在某些项目中,安装的app比较多,要求在launcher3的首页开始安装 app应用,接下来就需要分析下app安装图标排序的流程,然后在实现相关的功能 2. Launcher3从首页开始安装app功能实现的核心…...

软考高级架构 - 10.5 软件架构演化评估方法

10.4 软件架构演化原则总结 本节提出了18条架构演化的核心原则&#xff0c;并为每条原则设计了简单而有效的度量方法&#xff0c;用于从系统整体层面提供实用信息&#xff0c;帮助评估和指导架构演化。 演化成本控制&#xff1a;成本小于重新开发成本&#xff0c;经济高效。进…...

半导体制造全流程

半导体制造是一个极其复杂且精密的过程&#xff0c;主要涉及将硅片加工成功能强大的芯片。以下是半导体制造的全流程概述&#xff1a; 1. 硅材料制备 硅提纯&#xff1a; 使用冶金级硅&#xff0c;进一步提纯为高纯度硅&#xff08;电子级硅&#xff09;&#xff0c;纯度可达 …...

国科大网络协议安全期末

完整资料仓库地址&#xff1a;https://gitee.com/etsuyou/UCAS-Network-Protocol-Security 部分题目&#xff1a; 六 论述题10*220 试讨论IPv6解决了IPv4的哪些“痛点”&#xff0c;以及IPv6存在的安全问题试比较IPsec与SSL的安全性 五 简答题5*315 简述MAC欺骗和ARP欺骗的…...

ES动态索引——日志es索引数据按月份存储

一、定义ES索引 NoArgsConstructor AllArgsConstructor Data Accessors(chain true) Document(indexName "charge_pile_log" Constants.ES_TIME_DYNAMIC_INDEX) //(索引名称动态&#xff0c;前面固定&#xff0c;后面月份) public class ChargePileLogESDomain {…...

NLP论文速读(ICML 2024)|面相对齐大语言模型的迁移和合并奖励模型方法

论文速读|Transforming and Combining Rewards for Aligning Large Language Models 论文信息&#xff1a; 简介&#xff1a; 本文探讨了如何使大型语言模型&#xff08;LLMs&#xff09;与人类偏好对齐。传统的对齐方法是先从偏好数据中学习一个奖励模型&#xff0c;然后使用这…...

蓝桥杯我来了

最近蓝桥杯报名快要截止了&#xff0c;我们学校开始收费了&#xff0c;我们学校没有校赛&#xff0c;一旦报名缴费就是省赛&#xff0c;虽然一早就在官网上报名了&#xff0c;但是一直在纠结&#xff0c;和家人沟通&#xff0c;和朋友交流&#xff0c;其实只是想寻求外界的支持…...

Vue3+TypeScript+AntVX6实现Web组态(从技术层面与实现层面进行分析)内含实际案例教学

摘要 用Vue3+TypeScript+AntVX6实现Web组态(从技术层面与实现层面进行分析),包含画布创建、节点设计、拖拽实现(实际案例)、节点连线、交互功能,后续文章持续更新。 注:本文章可以根据目录进行导航 文档支持 AntVX6使用文档 https://x6.antv.antgroup.com/tutorial…...

【LeetCode】每日一题 2024_12_13 K 次乘运算后的最终数组 I(暴力)

前言 每天和你一起刷 LeetCode 每日一题~ 小聊两句 1、今天是 12.13 南京大屠杀国家公祭日。铭记历史&#xff0c;勿忘国耻。 2、今天早上去看了 TGA 年度游戏颁奖&#xff0c;小机器人拿下了年度最佳游戏&#xff0c;所有人都震惊了&#xff0c;大伙纷纷问到&#xff0c;谁…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

作者&#xff1a;吴岐诗&#xff0c;杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言&#xff1a;融合数据湖与数仓的创新之路 在数字金融时代&#xff0c;数据已成为金融机构的核心竞争力。杭银消费金…...

怎么让Comfyui导出的图像不包含工作流信息,

为了数据安全&#xff0c;让Comfyui导出的图像不包含工作流信息&#xff0c;导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo&#xff08;推荐&#xff09;​​ 在 save_images 方法中&#xff0c;​​删除或注释掉所有与 metadata …...

Python 训练营打卡 Day 47

注意力热力图可视化 在day 46代码的基础上&#xff0c;对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...