use() 是 React 19 引入的 API,可在渲染中读取 Promise 或 Context:Promise 未 resolve 时组件挂起(配合 Suspense 显示 fallback),resolve 后用结果重新渲染;读 Context 时等价于 useContext。它是唯一可以放在条件分支和循环里的「类 Hook」API,不受 Hook 顶层调用规则限制。

典型用法:服务端组件或路由 loader 创建 Promise 并缓存,传给客户端组件用 use(promise) 解包,配合 ErrorBoundary 捕获 rejection。易错点:不能在客户端渲染期间现创建 Promise 再 use——每次渲染都是新 Promise 会无限挂起,Promise 必须来自缓存或上游;use() 读取的 Context 仍受 Provider 层级约束。追问:与 Relay/SWR 的 Suspense 模式关系、和 Server Components 数据流的配合。

function Comments({ promise }) {
  const list = use(promise)
  return list.map(renderItem)
}