ReactJS useTransition Hook
在构建交互式用户界面时,性能是一个关键的考虑因素。改进React应用程序性能的一种方法是使用useTransition挂钩。该挂钩允许您将某些状态更新指定为不重要,通过将与动画相关的状态更改与组件中的其他状态更改分开。
在本文中,我们将探讨useTransition挂钩的基础知识以及如何使用它来提高React应用程序的性能。
useTransition挂钩 使我们能够指定哪些状态更改是关键或紧急的,哪些不是。
在React中,所有状态更改都被视为必要的。可能会有某些快速的UI更新,比如从下拉菜单中选择一个值,这些更新应该优先于其他更新,比如列表过滤,这可能会减慢它们的执行速度。useTransition挂钩允许我们指定哪些状态更改应该以较低的优先级运行,以提高应用程序的性能。
语法:
useTransition hook不接受任何参数,并返回两个值:
- isPending: 一个布尔值,指示过渡当前是否正在进行中。
- startTransition: 一个可以用于开始过渡的函数。
让我们看一些实际使用useTransition的示例。
创建React应用:
步骤1: 创建一个项目目录,转到终端,并使用以下命令创建一个名为usetransition-example的React应用:
步骤2: 创建 usetransition-example 应用后,通过键入以下命令切换到新文件夹 usetransition-example:
项目结构:
我们会修改文件夹并保留我们在这个示例中需要的文件。现在,请确保您的文件结构如下所示:
示例1: 我们将使用 useTransition 钩子来更改文本的可见性以及更改文本本身。
index.html: 将以下代码包含在位于项目目录的 public 文件夹中的 index.html 文件中。
App.js:
- 在这个示例中,组件包含两个按钮,第一个按钮将在 true 和 false 之间切换 isVisible 状态变量,第二个按钮将改变文本。
- 当点击“切换可见性”按钮时,isVisible 状态变量将切换,同时调用 startTransition 函数来开始过渡,并使用 isPending 来给元素应用一个不透明度样式,该样式根据过渡的状态而变化,即是进行中或者不在进行中。
App.css: 将以下代码添加到App.css中以样式化应用程序。
index.js: 将以下代码添加到index.js文件中。
运行应用程序的步骤: 使用以下命令运行应用程序:
输出: 默认情况下,React项目会在端口3000上运行。您可以在浏览器上通过 localhost:3000 访问它。
示例2:使用useTransition hook更新列表项。
startTransition将包含 setList 方法。这表示更新setList状态的优先级较低,而更新输入字段的优先级较高。这确保我们可以在代码运行缓慢时仍然与应用程序进行交互。
App.js:
运行应用程序的步骤: 使用以下命令运行应用程序:
输出:
我们输入的字段在我们输入时即时更新,而该列表在加载完成后渲染。