如何使用 useTransition hook 提高 React 性能

如何使用 usetransition hook 提高 react 性能

react 是一个用于构建用户界面的流行 javascript 库。它以高效且专注于创建可重用的 ui 组件而闻名。 react 的关键特性之一是引入了钩子,它是挂钩到 react 状态的函数。这些钩子中的一个是 usetransition 钩子。该钩子允许在不阻塞界面的情况下进行状态更改,从而带来流畅的体验。

了解 usetransition 钩子

为了更好地理解 usetransition 钩子,我们将研究以下示例。

import {usestate} from "react"const app = () => {  const [post, setpost] = usestate(undefined)  const fetchdata = async () => {    await fetch("https://jsonplaceholder.org/posts/1")      .then((result) => result.json())      .then((result) => setpost(result))  }  return(    
{post !== undefined && (

{post?.title}

{post?.content}

)}
)}export default app;

登录后复制

当用户单击按钮时,根据互联网的速度或 fetchdata 函数内执行的任务的繁重,ui 可能会在获取任务期间冻结,这将导致用户体验不佳。如果您不希望用户滥用您的应用程序,也可能会向按钮发送垃圾邮件。此外,应用程序不会向用户显示任何正在进行的操作的指示。

使用 usetransition 钩子可以轻松解决这些问题,我们可以将之前的代码更新为类似这样的内容。

import {useState, useTransition} from "react"import {ImSpinner2} from "react-icons/im"const App = () => {  const [pending, startTransition] = useTransition()  const [post, setPost] = useState({})  const fetchData = () => {    startTransition( async () => {      await fetch("https://jsonplaceholder.org/posts/1")        .then((result) => result.json())        .then((result) => setPost(result))    })  }  return(    
{post !== undefined && (

{post.title}

{post.content}

)}
)}export default App;

登录后复制

调用的usetransition钩子返回两个值:pending,如果任务执行完毕并且starttransition函数包含可能被更紧急的任务打断的任务,则该值将为true。

在上面的示例中,我们将获取请求包装在 starttransition 函数内的异步箭头函数中。

并且在按钮中,我们以包含链接到待处理的禁用属性的方式对其进行修改,并且我们更改了按钮的标签,以在任务待处理时显示微调器,并在任务待处理时显示标签“获取帖子”任务没有待处理。

这会带来流畅的用户体验,并提供更好的性能,并保护您的应用程序免受用户不当行为的影响。

结论

usetransition 钩子是一个游戏规则改变者,用于构建具有流畅用户体验的高性能 react 应用程序。它确保 ui 在可能缓慢的操作期间保持响应并防止 ui 冻结,从而增强整体用户体验。

以上就是如何使用 useTransition hook 提高 React 性能的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2670526.html

(0)
上一篇 2025年3月7日 12:58:54
下一篇 2025年2月23日 00:14:47

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 如何使用 AWS 部署带有自定义域的 React 项目?

    使用 aws(amazon web services)等云提供商通过自定义域部署 react 应用程序可能看起来令人畏惧,但当分解为可管理的步骤时,它就很简单。在本文中,我们将指导您完成从构建应用程序到使其在您的自定义域上运行的整个过程。 …

    2025年3月7日
    000
  • 如何使用 Javascript 确定二叉树是否相同

    介绍 这里相同意味着结构和值都处于相同的位置。 为了实现这一点,我们需要使用 dfs 算法,这样它也会检查深度。 使用 bfs 算法无法实现这一点。 所以这里我使用有序遍历来得到结果 class Node { constructor(dat…

    2025年3月7日
    200
  • 在 WordPress 中排队 CSS 和 JS 脚本以获得更好的性能

    wordpress 是开源软件 – 用户可以按照自己的意愿安装、修改和分发它。由于每个人都可以访问源代码,数百万 wordpress 专家和开发人员可以创建工具和扩展并与公众分享。 让我们看看如何将 css 和 js 文件加入到你的word…

    2025年3月7日
    200
  • 如何在 ReactJS 中创建可重用的 Button 组件

    按钮无疑是任何 react 应用程序中重要的 ui 组件,按钮可能用于提交表单或打开新页面等场景。您可以在 react.js 中构建可重用的按钮组件,您可以在应用程序的不同部分中使用它们。因此,维护您的应用程序将变得更加简单,并且您的代码将…

    2025年3月7日
    200
  • 理解 Arrayreduce()

    介绍 在学习 javascript 入门课程并学习数组的所有不同方法时。我不太了解reduce方法的真正威力,只有在第二次回顾它之后我才意识到这个方法是多么有用。我希望这篇文章能让一些人更清楚地了解此方法的工作原理以及何时使用它。 方法 a…

    2025年3月7日
    200
  • 传播和休息运算符

    从现有数组形成一个新数组,字符噪音更少。spread 将元素提取为值。它是一个不可变的函数。[] 是写入新数组的方式。因此,展开不会改变原始数组。spread 适用于所有可迭代对象,而不仅仅是数组。iterables:字符串、数组、映射、集…

    2025年3月7日
    200
  • Astro + Nx + Paraglide – 创建 i 模块

    正如我在另一篇文章中所说,我正在学习 astro.build。 我不喜欢与 astro 和 paraglide 集成的一件事是将所有内容保留在 /src 文件夹中。 如果您有一个庞大的代码库,将来管理和保持代码整洁可能会成为问题。好吧,我知…

    2025年3月7日 编程技术
    200
  • AJAX 调用的占位符函数

    我最近不得不创建一个没有后端端点的用户界面(ui)。重点是使 ui 尽可能具有响应性,以便用户可以知道操作何时正在进行。 这主要意味着当进行 ajax 调用时,ui 应进行指示,并在调用完成时进行相应更新。 为了帮助 ui 的开发,我创建了…

    2025年3月7日
    200
  • let、var 或 const 之间有什么区别?

    使用 var 关键字声明的变量的作用域为创建它们的函数,或者如果在任何函数外部创建,则为全局对象。 let 和 const 是块作用域的,这意味着它们只能在最近的一组花括号(函数、if-else 块或 for 循环)内访问。 functio…

    2025年3月7日
    200
  • 计算机科学中缓慢但持续努力的力量

    在快节奏的计算机科学世界中,缓慢但持续努力的价值常常被快速创新的诱惑所掩盖。然而,正是这种有条不紊的方法构成了该领域一些最杰出成就的基础。 *渐进式进步* 代码、设计和机器学习算法中的微小增量变化单独来看似乎微不足道,但随着时间的推移,累积…

    2025年3月7日
    200

发表回复

登录后才能评论