React 的常用 Hook 之 use

use()

这个钩子可以接受Promisecontext

你可以在你的服务器组件中创建一个Promise,然后传递给客户端组件,在客户端组件中用use(xxPromise)来解析传递进去的promise,一般是搭配Suspense或者ErrorBoundary进行使用的:

"use client";

import { use, Suspense } from "react";
import { ErrorBoundary } from "react-error-boundary";

export function MessageContainer({ messagePromise }) {
  return (
    <ErrorBoundary fallback={<p>⚠️Something went wrong</p>}>
      <Suspense fallback={<p>⌛Downloading message...</p>}>
        <Message messagePromise={messagePromise} />
      </Suspense>
    </ErrorBoundary>
  );
}

function Message({ messagePromise }) {
  const content = use(messagePromise);
  return <p>Here is the message: {content}</p>;
}

执行效果:录屏2025-10-30 18.01.22

用法

简单说明就是,这个钩子必须要在React组件或者Hook中使用,下面这种用法是错的:

function MessageComponent({messagePromise}) {
  function download() {
    // ❌ 调用 `use` 的函数不是组件或者 Hook
    const message = use(messagePromise);
    // ...

这种是对的:

function MessageComponent({messagePromise}) {
  // ✅ `use` 正在组件内被调用
  const message = use(messagePromise);
  // ...