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.reportError或console.error报告。 -
移除弃用API:包括
propTypes、defaultProps、Legacy Context、字符串引用(string refs)、Module pattern factories以及React.createFactory等。
🔧 新弃用功能
-
**element.ref**:React 19支持ref作为属性,因此element.ref已被弃用。 -
**react-test-renderer**:由于它实现了自己的渲染环境,并且依赖于React的内部结构,因此已被弃用。
🎉 显著变更
-
StrictMode的变更:在开发模式下,
useMemo和useCallback将在双重渲染中重用第一次渲染的memoized结果。 -
UMD构建移除:React 19不再生成UMD构建,推荐使用基于ESM的CDN加载React。
没想到UMD已经进入淘汰环节了
📝 TypeScript变更
-
清理了基于React 19中移除的API的TypeScript类型。
-
useRef现在需要一个参数,这简化了其类型签名。 -
ReactElement的props现在默认为unknown而不是any。
🔍 其他变更和移除
-
移除了
react-dom/test-utils中的act和其他一些不常用的工具函数。 -
移除了
ReactDOM.render、ReactDOM.hydrate、unmountComponentAtNode和ReactDOM.findDOMNode。
React 19的发布是向前迈出的一大步,带来了性能提升和新特性。本指南提供了从安装到代码现代化,再到处理破坏性变更的全面路径。立即开始升级,拥抱React 19带来的新世界!🌈