Home
avatar

.Sam

探索 React 19 的新特性

React 19 带来了什么

React 19 是一次重大更新,引入了多项令人兴奋的新特性,让开发体验更加流畅。

React Compiler

React Compiler 是 19 版本最重要的变化之一。它能够在编译阶段自动优化组件的重渲染行为,开发者不再需要手动使用 useMemouseCallbackReact.memo

// 以前需要手动优化
const MemoizedComponent = React.memo(({ data }) => {
  const processed = useMemo(() => expensiveCalc(data), [data]);
  return <div>{processed}</div>;
});

// React 19 编译器自动处理
function Component({ data }) {
  const processed = expensiveCalc(data);
  return <div>{processed}</div>;
}

Actions

Actions 简化了表单处理和异步操作:

function UpdateProfile() {
  const [error, submitAction, isPending] = useActionState(
    async (prevState, formData) => {
      const result = await updateUser(formData);
      if (result.error) return result.error;
      redirect("/profile");
    },
    null
  );

  return (
    <form action={submitAction}>
      <input name="username" />
      <button disabled={isPending}>
        {isPending ? "保存中..." : "保存"}
      </button>
      {error && <p className="error">{error}</p>}
    </form>
  );
}

use() Hook

新的 use() API 可以在渲染期间读取 Promise 和 Context:

function Comments({ commentsPromise }) {
  const comments = use(commentsPromise);
  return (
    <ul>
      {comments.map((c) => (
        <li key={c.id}>{c.text}</li>
      ))}
    </ul>
  );
}

升级建议

如果你正在使用 React 18,建议先确保项目中没有使用已废弃的 API,然后逐步迁移。React 团队提供了 codemods 工具来辅助升级过程。

总结

React 19 的方向很明确:减少样板代码,让开发者专注于业务逻辑。编译器的引入是一个里程碑式的变化,值得每个 React 开发者关注。

React JavaScript