React 19来了,带来了许多让人激动的新特性!
你好,Dev,是我 Md Taqui Imam ,React 19 现已稳定,让我们来看看有什么新东西以及如何在项目中使用这些新功能。
本指南会用实用例子帮你了解最重要的更新内容。
关注我⭐在我的GitHub
……
操作和表单管理 ⭐操作是 React 中的一大新增功能,这使得处理表单提交和数据修改变得更简单。
function 更新名字() {
const [错误, 提交操作] = useActionState(
async (前一个状态, 表单数据) => {
const 名称 = 表单数据.get("name");
try {
await 更新名字(名称);
return null; // 无错误
} catch (错误) {
return "更新失败";
}
},
null
);
return (
<form action={提交操作}>
<input type="text" name="name" />
<button type="submit" disabled={处理中}>
{处理中 ? "正在更新…" : "更新名字"}
</button>
{错误 && <p className="error">{错误}</p>}
</form>
);
}
进入全屏;退出
等等
使用表单中的绿色状态按钮 🟢 (例如: 🟢 表示成功)新的 useFormStatus
钩子让显示加载过程变得很简单。
import { useFormStatus } from 'react-dom';
function SubmitButton() {
const { pending } = useFormStatus();
return (
<button disabled={pending}>
{pending ? '提交中...' : '提交'}
</button>
);
}
开启全屏 关闭全屏
此处省略内容
新的钩子 🎉1. useOptimistic 🆕
此钩子可以在等待服务器响应时使用乐观更新,提供即时反馈。
import { useState } from 'react';
function 用户资料组件({ 用户数据 }) {
const [用户, setUser] = useState(用户数据);
return (
<div>
<h1>{用户.name}</h1>
<p>{用户.email}</p>
</div>
);
}
全屏模式; 退出全屏
等等再看
……
文档元数据功能支持现在 React 19 原生支持元数据标签(metadata标签)了:
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>
);
}
进入全屏, 退出全屏
资产加载优化
用于优化资源加载的新API。
import { preload, preinit, preconnect } from 'react-dom';
function App() {
// 预加载重要的资源
preload('/fonts/main.woff2', { as: 'font' });
preinit('/styles/critical.css', { as: 'style' });
preconnect('https://api.example.com');
// 返回主组件
return <Main />;
}
进入全屏 退出全屏
Web 组件支持
React 19 现已完全支持自定义组件:
function App() {
return (
<div>
<自定义元素
strProp="hello"
numProp={42}
objProp={{ foo: 'bar' }}
on事件={(e) => console.log(e.detail)}
/>
</div>
);
}
全屏模式, 退出
其他优化 🛠️
将 Ref 用作 prop
// 旧的写法使用 forwardRef
const OldInput = forwardRef((props, ref) => (
<input ref={ref} {...props} />
));
// React 19 中的新方式
定义一个新输入函数 NewInput({ ref, ...props }) {
返回一个输入框, 其 ref 属性和 props 属性都被设置好:
}
进入全屏 退出全屏
更棒的错误报告提示 🔥超燃!
React 19 提供了更清晰的错误消息,并且在渲染过程中的 hydration 错误报告方面做得更好:
const root = createRoot(container, {
onCaughtError: (error) => {
// 处理由错误边界捕获的错误
logError(error);
},
onUncaughtError: (error) => {
// 处理未被捕获的错误
reportFatalError(error);
}
});
进入全屏 退出全屏
就这样吧 😅
React 19 带来了许多激动人心的新功能,使开发变得更加轻松高效。新的表单处理功能、钩子以及改进的资产加载功能,将帮助开发者用更少的代码构建更好的应用体验。
记得,虽然这些功能现在已稳定,但在将现有应用升级到 React 19 时,还是建议彻底测试。
想要了解更多,请参阅官方 React(React 19)宣布公告和相关文档。
掰掰,祝你每天开心,玩得愉快,下次见,下篇博客见。
祝你编程愉快!随机关注
我是自学成才的网页开发者,一直在学习和做有趣的东西。
(点击查看我的作品)