首页 > 技术文章 > React 18 之 useTransition

billyu 2022-03-30 22:03 原文

useTransition


先看看 useTransition

想象这样的场景,页面有个 input,用户输入后会去请求 API 获取数据。如果没有额外做一些优化会发生这样的情况,

  • 多个搜索调用被执行,造成浪费。
  • 如果用户输入的太快太多,页面可能会出现卡死。

为了解决这一问题,在单线程上运行的 React 必须对这些事件和功能进行组合、重新排序和优先处理,以便给用户更友好的体验。

React 18 提供了一个新API:useTransition。"组合"使用这些API,我们将可以从一个全新的维度去优化用户体验——网速快性能高的设备的页面渲染将更快,网速慢性能差的设备的页面体验将更好。

import { useTransition } from'react';

const [isPending, startTransition] = useTransition();

const callback = () => {
  setInputValue(input);

  startTransition(() => {
    setSearchQuery(input);
  });
}

{isPending && <Spinner />

看起来有点像给搜索加了个 debounce。

推荐阅读