首页 > web前端 > js教程 > 反应19

反应19

Mary-Kate Olsen
发布: 2025-01-04 03:09:39
原创
117 人浏览过

React 19

React 19 中的新功能

REACT 19 有哪些新功能?

1.反应编译器

有什么新内容?

  • React 自动优化重新渲染,无需手动干预。

  • 不再需要:useMemo()、useCallBack()、React.memo

为什么使用 React 编译器?

  • 手动优化对于开发者来说是乏味的。

  • React 现在可以自动处理状态更改和重新渲染逻辑。

好处

  • React 决定重新渲染什么以及何时重新渲染。

  • 减少开发人员的工作量。

  • 更干净、更简单的代码库。

  • 目前正在为 Instagram 提供支持。

2. 服务器组件

有什么新内容?

  • 在服务器而不是客户端上运行的组件。

  • 之前由 Next.js 首创(V13 中默认)。

  • 在 React 19 中,服务器组件是原生集成的。

好处

  • SEO 友好:增强搜索引擎优化。

  • 性能提升:初始页面加载速度更快。

  • 服务器端执行:高效处理 API 调用等任务。

如何使用服务器组件?

  1. 客户端(默认):所有 React 组件都在客户端运行。

  2. 服务器端:添加“use Server”作为组件的第一行:

'use server';

export default async function requestUsername(formData) {
  const username = formData.get('username');
  return canRequest(username) ? 'successful' : 'failed';
}
登录后复制
登录后复制

要点

  • 服务器组件不在客户端上运行。

  • 与操作相结合,它们简化了表单处理和 API 请求等任务。

  • Next.js 用户已经可以利用服务器组件; React 19 直接将其引入 React。

3. 行动

  • React19 之前:手动处理异步状态。
function handleSubmit() {
  setloading (true);
  try {
      const result = await saveData();
      setData(result);
      } 
  catch (err) 
     {
     setError(err);
     }
  finally
     {
     setloading(failse);
     } 
}
登录后复制
登录后复制
  • React19 之后:使用 useActionsState 进行干净的异步处理。
const [state, formAction] = useActionState(async (prevState, formData) => {
   const result = await saveData(formData);
   return result;
   }, null);

登录后复制
登录后复制
  • 自动处理加载、错误和状态更新。

4.新钩子

USEACTIONSTATE:表单处理

自动管理提交状态和表单验证。

  • 在 REACT19 之前:
const [isSubmitting, setIsSubmitting] = useState(false);

async function handleSubmit() {
  setIsSubmitting(true);
  try {
      await submitForm();
      }
  finally 
      {
      setIsSubmitting(false);
      }
}
登录后复制
登录后复制
  • 反应 19 之后:

useActionState 简化了表单提交。

const [state, formAction] = useActionState(async (prevState, formData) => {
    return await submitForm(formData);
});
登录后复制
登录后复制

USEFORMSTATUS:跟踪表单状态

访问表单状态,例如待处理、成功或错误。

const status = useFormStatus();

<button type = "submit" disabled = { status.pending }>
  { status.pending ? "Submitting..." : "Submit" } 
</button>
登录后复制
登录后复制

使用乐观:乐观的 UI 更新

简化乐观更新以获得更好的用户体验。

  • 反应19之前:

您乐观地更新了 UI,他们处理了恢复。

'use server';

export default async function requestUsername(formData) {
  const username = formData.get('username');
  return canRequest(username) ? 'successful' : 'failed';
}
登录后复制
登录后复制
  • 反应19之后:

useOptimistic 使其具有声明性。

function handleSubmit() {
  setloading (true);
  try {
      const result = await saveData();
      setData(result);
      } 
  catch (err) 
     {
     setError(err);
     }
  finally
     {
     setloading(failse);
     } 
}
登录后复制
登录后复制

5. USE() 钩子

use() 是什么?

use() 钩子通过直接处理 Promise 来简化异步数据获取和上下文消耗。

  • REACT19 之前:使用 UseEffect

手动处理异步状态。

const [state, formAction] = useActionState(async (prevState, formData) => {
   const result = await saveData(formData);
   return result;
   }, null);

登录后复制
登录后复制
  • REACT19 之后:USE() 钩子

直接获取异步数据并解析 Promise

const [isSubmitting, setIsSubmitting] = useState(false);

async function handleSubmit() {
  setIsSubmitting(true);
  try {
      await submitForm();
      }
  finally 
      {
      setIsSubmitting(false);
      }
}
登录后复制
登录后复制

优点:

  • 不需要 useEffect 或 useState。
  • 更干净、更具声明性的代码。
  • 无缝处理 Promise。

6. 服务器组件

什么是服务器组件?

服务器组件在服务器上渲染并向客户端发送轻量级结果,从而提高性能。

  • REACT19 之前:传统客户端 - 侧面渲染

你必须使用useEffect来获取数据,SSR需要复杂的工具。

const [state, formAction] = useActionState(async (prevState, formData) => {
    return await submitForm(formData);
});
登录后复制
登录后复制
  • REACT19 之后:服务器 - 端渲染

React 服务器组件无缝集成。

const status = useFormStatus();

<button type = "submit" disabled = { status.pending }>
  { status.pending ? "Submitting..." : "Submit" } 
</button>
登录后复制
登录后复制

优点:

  • 页面加载速度更快(无需繁重的客户端 JS)。
  • 改进了 SEO 并减小了捆绑包大小。

7. 强化资产加载

React19 改进了图像和脚本等资源在后台的加载方式。

  • 在 REACT19 之前:

您需要手动配置。

function handleClick() {
 setItems([...items, newItem]);
 saveItem(newItem).catch(() => setItems(items)); // Revert on error
}
登录后复制
  • REACT19 之后:本机延迟加载

资产现在无需干预即可高效加载。

const [optimisticItems, addOptimisticItem] = useOptimistic(items);

function handleClick() {
 addOptimisticItem(newItem);
}
登录后复制

优点:

  • 加载时间更快。
  • 更好的用户体验并减少延迟。

结论

React 19 带来:

  • 通过操作简化异步状态管理。
  • 新钩子,例如 useActionState,
  • useFormStatus 和 UseOptimistic。
  • use() 钩子可轻松处理异步数据。
  • 无缝服务器组件以获得更好的性能。
  • 更清晰的参考管理和增强的资源加载。

以上是反应19的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板