小心!React 19带来破坏性变更,但升级从未如此简单!

661 阅读3分钟

maxresdefault.jpg

React 19 RC版本已经到来,带来了一系列激动人心的新特性和改进。但随着新版本的发布,一些破坏性变更也随之而来。不过别担心,React团队已经尽可能地简化了升级流程,以确保大多数应用不会受到太大影响。以下是React 19 RC版本升级的精华指南,助你轻松过渡到新版本。

📦 安装新版本

首先,你需要更新你的React和React DOM到最新的RC版本。无论是使用npm还是Yarn,都可以通过精确版本安装来确保稳定性:

npm install --save-exact react@rc react-dom@rc

yarn add --exact react@rc react-dom@rc

🌟 JSX转换新要求

React 19引入了新的JSX转换,这要求你更新你的构建设置。如果未启用新转换,你可能会看到警告信息。大多数环境中已经默认启用了新转换,但手动升级指导可以在官方公告中找到。

⚠️ 注意事项

  • React 18.3版本:为了帮助更容易地升级到React 19,React团队发布了React 18.3版本,它在18.2版本的基础上增加了对React 19所需变更的警告。

  • TypeScript用户:React 19发布稳定版本后,你可以通过@types/react@types/react-dom安装类型定义。在此之前,类型定义在不同的包中提供。

🛠️ 代码现代化:Codemods

React团队与codemod.com合作,提供了一系列的代码现代化工具(codemods),这些工具将自动帮你将代码更新至React 19中的新API和模式。

💥 破坏性变更概览

  • 错误处理:在渲染期间抛出的错误不再被重新抛出,而是通过window.reportErrorconsole.error报告。

  • 移除弃用API:包括propTypesdefaultProps、Legacy Context、字符串引用(string refs)、Module pattern factories以及React.createFactory等。

🔧 新弃用功能

  • **element.ref**:React 19支持ref作为属性,因此element.ref已被弃用。

  • **react-test-renderer**:由于它实现了自己的渲染环境,并且依赖于React的内部结构,因此已被弃用。

🎉 显著变更

  • StrictMode的变更:在开发模式下,useMemouseCallback将在双重渲染中重用第一次渲染的memoized结果。

  • UMD构建移除:React 19不再生成UMD构建,推荐使用基于ESM的CDN加载React。

没想到UMD已经进入淘汰环节了

📝 TypeScript变更

  • 清理了基于React 19中移除的API的TypeScript类型。

  • useRef现在需要一个参数,这简化了其类型签名。

  • ReactElementprops现在默认为unknown而不是any

🔍 其他变更和移除

  • 移除了react-dom/test-utils中的act和其他一些不常用的工具函数。

  • 移除了ReactDOM.renderReactDOM.hydrateunmountComponentAtNodeReactDOM.findDOMNode

React 19的发布是向前迈出的一大步,带来了性能提升和新特性。本指南提供了从安装到代码现代化,再到处理破坏性变更的全面路径。立即开始升级,拥抱React 19带来的新世界!🌈