React 19 现已稳定!新功能 👇

2025-06-07

React 19 现已稳定!新功能 👇

React 19 带来了令人兴奋的新功能和改进!

你好,Dev,我是Md Taqui ImamReact 19现在已经稳定,所以让我们探索一下有什么新功能以及如何在你的项目中使用这些功能。

本指南将通过实际示例向您介绍最重要的更新。

在 Github 上关注我⭐


操作和表单处理⭐

Actions 是 React 19 中最大的新增功能之一。它们使处理表单提交和数据变异变得更加容易。

function UpdateProfile() {
 const [error, submitAction, isPending] = useActionState(
 async (previousState, formData) => {
 const name = formData.get("name");
 try {
 await updateProfile(name);
 return null; // No error
 } catch (err) {
 return "Failed to update profile";
 }
 },
 null
 );
return (
 <form action={submitAction}>
 <input type="text" name="name" />
 <button type="submit" disabled={isPending}>
 {isPending ? "Updating…" : "Update Profile"}
 </button>
 {error && <p className="error">{error}</p>}
 </form>
 );
}
Enter fullscreen mode Exit fullscreen mode

使用表单状态🟢

新的useFormStatus钩子可以轻松显示加载状态:

import { useFormStatus } from 'react-dom';
function SubmitButton() {
 const { pending } = useFormStatus();

 return (
 <button disabled={pending}>
 {pending ? 'Submitting…' : 'Submit'}
 </button>
 );
}
Enter fullscreen mode Exit fullscreen mode

新的 Hooks 🎉

1. useOptimistic 🆕
此钩子有助于在等待服务器响应时创建即时反馈:

import { use } from 'react';
function UserProfile({ userPromise }) {
 const user = use(userPromise);

 return (
 <div>
 <h1>{user.name}</h1>
 <p>{user.email}</p>
 </div>
 );
}
Enter fullscreen mode Exit fullscreen mode

保存


文档元数据支持

React 19 现在原生支持元数据标签:

function BlogPost({ post }) {
 return (
 <article>
 <title>{post.title}</title>
 <meta name="description" content={post.summary} />
 <link rel="canonical" href={post.url} />

 <h1>{post.title}</h1>
 <p>{post.content}</p>
 </article>
 );
}
Enter fullscreen mode Exit fullscreen mode

另请查看此博客


资源加载改进

用于优化资源加载的新 API:

import { preload, preinit, preconnect } from 'react-dom';
function App() {
 // Preload important resources
 preload('/fonts/main.woff2', { as: 'font' });
 preinit('/styles/critical.css', { as: 'style' });
 preconnect('https://api.example.com');
return <Main />;
}

Enter fullscreen mode Exit fullscreen mode

Web 组件支持

React 19 现在完全支持自定义元素:

function App() {
 return (
 <div>
 <custom-element
 stringProp="hello"
 numberProp={42}
 objectProp={{ foo: 'bar' }}
 onCustomEvent={(e) => console.log(e.detail)}
 />
 </div>
 );
}
Enter fullscreen mode Exit fullscreen mode

其他改进🛠️

Ref 作为 Prop

// Old way with forwardRef
const OldInput = forwardRef((props, ref) => (
 <input ref={ref} {props} />
));
// New way in React 19
function NewInput({ ref, props }) {
 return <input ref={ref} {props} />;
}
Enter fullscreen mode Exit fullscreen mode

更好的错误报告🔥

React 19 提供了更清晰的错误消息和更好的 Hydration 错误报告:

const root = createRoot(container, {
 onCaughtError: (error) => {
 // Handle errors caught by Error Boundaries
 logError(error);
 },
 onUncaughtError: (error) => {
 // Handle errors not caught by Error Boundaries
 reportFatalError(error);
 }
});
Enter fullscreen mode Exit fullscreen mode

结论/就是这样😅

React 19 带来了许多激动人心的功能,使开发更加轻松高效。新的表单处理功能、钩子以及改进的资源加载功能将帮助开发者用更少的代码构建更优秀的应用程序。

请记住,虽然这些功能现在已经稳定,但建议在将现有应用程序升级到 React 19 时进行彻底测试。

欲了解更多信息,请查看React 19 官方公告和文档。

下篇博文再见,祝您有美好的一天。

编码愉快!


GitHub

叽叽喳喳

文件夹

buymeacoffee

文章来源:https://dev.to/random_ti/react-19-is-now-stable-whats-new-1k3b
PREV
基础设施图即代码
NEXT
适用于每个项目的 7 个完美 Vue 3 UI 库的终极列表