0

0

反应新的更新

PHPz

PHPz

发布时间:2024-07-29 15:28:50

|

428人浏览过

|

来源于dev.to

转载

反应新的更新

本周,我们将讨论新的 react 19 更新和挂钩。在经历并使用了其中一些新更新后,我只能同意它简化了开发人员在构建应用程序(尤其是与交互式表单相关的应用程序)时所经历的一些严格活动。

加入我,让我们探索其中的一些新更新。

react 编译器react 编译器选择您的 react 代码,将其转换为浏览器的 javascript 代码,并管理组件或用户界面的状态。这个独特的操作有助于优化应用程序的性能。

如果您熟悉 usememo 钩子、usecallback 钩子和 react.memo,您就会明白它们有助于记忆(存储值或函数以供将来使用)您的组件,因此它们不必在以下情况下重新渲染:没有状态变化。当状态发生变化时,react 会重新渲染相关组件及其子组件,而当代码没有变化时,组件将保持原样,保留组件或钩子中的先前内存、值和状态以供将来使用用途;从而优化组件的性能。这正是 react 编译器自动执行的操作,无需手动调用任何上述钩子。

表单操作:使用 react 的最大优点之一是状态的管理和突变,这主要发生在我们使用元素时。表单帮助我们更有效地创建和处理用户交互。

使用 form actions,您不需要像 onsubmit 和 onchange 这样的事件处理程序来实现数据的实时突变,相反,我们可以将 action 属性传递给

元素,该元素接收触发事件的函数。
const myfunction = async (formdata) => {
  const [name, setname] = usestate("")

  const updatedname = await namechange(formdata.get("name"))
     setname(updatedname)
}

<form action={myfunction}>
   <input type="name" 
          name="name" _// this is important to be able to get our data //_
   />
   <button type="submit">submit</button>
</form>

通过这种方法,我们不需要应用usestate通过event.target.value来变异数据,而是在myfunction中我们可以通过参数获取变异数据。

这意味着我们必须从表单中的元素中设置一个 name 属性。使用此方法意味着我们允许react通过native react表单对象处理表单本身,而不是通过事件处理程序手动更改状态。

服务器组件:react 19 允许在捆绑之前在服务器上渲染组件,在与客户端应用程序或 ssr 服务器设置不同的环境中。 server 组件与 ssr(服务器端渲染)不同,而是 react server components 中的一个单独的服务器环境。
此功能允许组件提前预渲染,从而实现快速内容显示并缩短加载时间。

元数据:react 19 允许灵活的元数据。开发者可以通过 documenthead 组件管理各个组件的 titledescription 以及其他 meta 标签。这将有助于改善 seo(搜索引擎优化)。

ImgGood
ImgGood

免费在线AI照片编辑器

下载
const aboutus = () => {
 return (
    <>
      <title>learn more about our company</title>
      <meta name="aboutus" description="you can find us on ..." />
      // content
    </>
  );
}

react 19 有一系列new 钩子,一些是新的,另一些是对现有钩子的改进。下面我们就来讨论一下吧。

use() 钩子:use 钩子是一个实验性 api,可以直接用于读取组件或钩子中 promise 或上下文的值(这是目前唯一已知的限制)。
use hook 非常通用,也可以用来代替 useeffect,因为它可以用于异步数据获取。这有助于
实现更整洁、简洁的代码块。

警告它不是 useeffect 的替代品,因为它仍然有其自身的限制,_useeffect _将无限制地执行。

import {use} from "react"
const fetchdata = async () => {
    const response = await fetch("https://........");
    return response.json()
}

const userdata = () => {
    const user = use(fetchdata());

        return (
    <div classname='username'>{user.name}</div>
  );
}

useactionstate():这是一个新的钩子,有助于管理状态更改。它有助于管理挂起状态、错误处理和最终状态
状态更新。 useactionstate _的工作方式与 _usereduce _in 类似,它接收两个 (2) 个参数:提交表单时要调用的函数和一个 _initialstate,它返回一个包含三 (3) 个值的数组:状态,即现在,如果状态发生突变,则为当前状态,一个新的操作(formaction)可以作为表单组件中的道具传递以调用服务器操作,如果表单已提交,则_ispending_将返回_boolean_value。

import { useactionstate } from "react";

async function incrementfunction(initialstate, formdata) {
  return initialstate + 1;
}

function statefulform({}) {
  const [state, formaction, ispending] = useactionstate(incrementfunction, 0);

  console.log(state);

  return (
    <form>
      <button formaction={formaction}>{state}</button>
    </form>
  )
}

在此示例中,每次单击按钮时,incrementfunction都会将1添加到状态initialstate 为 0,然后在第一次单击按钮时增加到 1,从而将 state 更改为 1,并且每次单击按钮都会为组件的最后一个状态添加 1。

useoptimistic() 钩子:

这是一个新的钩子,允许用户甚至在页面完全加载之前就可以看到其操作的结果。即使服务器仍处于数据获取模式,页面也会乐观地呈现给用户。

react 希望数据获取成功,向客户端显示预期的结果,当数据获取失败时,react 恢复到之前状态的值,以免显示错误的数据。这种独特的操作有助于无缝、快速地显示数据,从而改善用户体验。

useformstatus():

顾名思义,useformstatus为我们提供表单表单字段的状态。这个钩子不接受任何参数,但它肯定返回 4 个对象:

pending:这会返回一个boolean值:truefalse。当表单提交时返回true,当表单提交时返回false

data:当表单提交成功后,我们可以从表单字段中获取用户或对象的信息,如下所示:

(formData.get("name"))
(formData.get("address"))

方法:除非另有说明,表单的默认方法是get。我们可以通过 .method 获取表单的方法。当我们提交表单时,应将字符串方法属性指定为post

action:这是对将传递给 元素中的 action 属性的函数的引用。

必须始终从

元素或在 . 内呈现的组件调用 useformstatus

还有很多更新我无法真正写下来,所以你不会因为读这么多而感到无聊。您可以单击 react docs 网站来查看其他一些更新。

希望您和我一起学习愉快。

如果您喜欢我的文章,请关注我。

谢谢,祝朋友们度过愉快的一周。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
java中boolean的用法
java中boolean的用法

在Java中,boolean是一种基本数据类型,它只有两个可能的值:true和false。boolean类型经常用于条件测试,比如进行比较或者检查某个条件是否满足。想了解更多java中boolean的相关内容,可以阅读本专题下面的文章。

367

2023.11.13

java boolean类型
java boolean类型

本专题整合了java中boolean类型相关教程,阅读专题下面的文章了解更多详细内容。

42

2025.11.30

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

761

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

221

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1570

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

651

2023.11.24

java读取文件转成字符串的方法
java读取文件转成字符串的方法

Java8引入了新的文件I/O API,使用java.nio.file.Files类读取文件内容更加方便。对于较旧版本的Java,可以使用java.io.FileReader和java.io.BufferedReader来读取文件。在这些方法中,你需要将文件路径替换为你的实际文件路径,并且可能需要处理可能的IOException异常。想了解更多java的相关内容,可以阅读本专题下面的文章。

1229

2024.03.22

php中定义字符串的方式
php中定义字符串的方式

php中定义字符串的方式:单引号;双引号;heredoc语法等等。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

1205

2024.04.29

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

49

2026.03.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
CSS梅兰商城网页设计项目视频教程
CSS梅兰商城网页设计项目视频教程

共18课时 | 5.4万人学习

三天学会PHP爬虫视频教程
三天学会PHP爬虫视频教程

共3课时 | 2.2万人学习

PHP与Ajax极速入门
PHP与Ajax极速入门

共8课时 | 11.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号