React 18

ops/2024/12/14 18:28:45/

文章目录

  • 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 不仅提升了性能,还简化了开发流程,为开发者提供了更强大的工具来构建高效、稳定的应用。


http://www.ppmy.cn/ops/141878.html

相关文章

同城到家预约上门服务解决方案:家政预约同城服务小程序

### 系统架构"同城到家预约上门服务解决方案&#xff1a;PHP家政预约同城服务小程序"采用B/S架构&#xff0c;后端使用PHP语言开发&#xff0c;前端则基于微信小程序平台。系统分为用户端、服务端和后台管理端&#xff0c;各端相互依赖又相互独立&#xff0c;支持多种…

国产自主可控新征程:华为原生鸿蒙系统与鲲鹏认证

华为于今年10月22日在深圳正式发布了其原生鸿蒙系统HarmonyOS NEXT。这是我国首个实现全栈自研的操作系统&#xff0c;标志着中国在操作系统领域取得了突破性进展。HarmonyOS NEXT 5.0的发布&#xff0c;使得鸿蒙操作系统成为继苹果iOS和安卓系统之后的全球第三大移动操作系统&…

vue canvas 绘制选定区域 矩形框

客户那边文档相当的多&#xff0c;目前需要协助其将文档转为数据写入数据库&#xff0c;并与其他系统进行数据共享及建设&#xff0c;所以不得不搞一个识别的功能&#xff0c;用户上传PDF文档后&#xff0c;对于关键信息点进行识别入库&#xff01; 以下为核心代码&#xff0c…

k8s+rancher配置滚动发布更新时服务不可用

问题 配置完了k8s优雅下线后&#xff0c;发现配置了滚动发布后&#xff0c;两个服务同时在running状态&#xff0c;其中旧服务开始下线会导致有三四秒的时间调用该服务的接口会负载均衡到该服务&#xff0c;接口调用就会报错服务异常。 经排查&#xff0c;具体原因是服务虽然…

Coconut:探索大语言模型的连续思维链推理能力

目录 简介&#xff1a; 什么是Coconut&#xff1f; 为什么我们需要Coconut&#xff1f; Coconut如何工作&#xff1f; 实验结果怎么样&#xff1f; Coconut的优势&#xff1a; 结论&#xff1a; 简介&#xff1a; 你有没有想过&#xff0c;计算机是如何像人类一样思考问…

基于ArqMATH 数据集探索大语言模型在数学问题推理解答中的能力

概述 论文地址&#xff1a;https://arxiv.org/pdf/2404.00344 源码地址&#xff1a;https://github.com/gipplab/llm-investig-mathstackexchange 大规模语言模型&#xff08;LLMs&#xff09;因其解决自然语言任务的能力而备受关注&#xff0c;在某些任务中&#xff0c;其准…

rk3568 , openharmony3.2 , 8G , 无法启动

问题&#xff1a; 目前使用 openharmony 3.2 版本的 镜像 &#xff0c;在8G的核心板上 &#xff0c;烧写之后&#xff0c;屏幕没有画面。 报错如下&#xff1a; 现象如下&#xff1a;  &#xff11; &#xff55;&#xff42;&#xff4f;&#xff4f;&#xff54;阶段是 有…

求解球面的一组正交标架

目录 求解球面的一组正交标架 求解球面的一组正交标架 球面 r ( u , v ) ( a cos ⁡ u cos ⁡ v , a cos ⁡ u sin ⁡ v , a sin ⁡ u ) \mathbf{r}(u,v)\left(a\cos u\cos v,a\cos u\sin v,a\sin u\right) r(u,v)(acosucosv,acosusinv,asinu), 求得 r u ( − a sin ⁡ u c…