百科.dev
全部条目在线工具AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
S

suspend-react

> 编程语言
开源

React 组件的 Async/await

1.4K stars0 点赞2 次浏览
访问官网GitHub

工具介绍

React 组件的 Async/await




```shell npm install suspend-react ``` 此库将您的异步操作集成到 React suspense 中。延迟状态和错误状态在父级处理,这使得单个组件免除了负担,并能够实现更好的协调。将其视为组件的 async/await。**适用于所有 React 版本 >= 16.6**。 ```jsx import { Suspense } from 'react' import { suspend } from 'suspend-react'

function Post({ id, version }) { const data = suspend(async () => { const res = await fetch(https://hacker-news.firebaseio.com/${version}/item/${id}.json) return res.json()
}, [id, version]) return (

) }

function App() { return ( <Suspense fallback={ }> ) }

#### API
```tsx
const suspend = <Keys extends Tuple<unknown>, Fn extends (...keys: Keys) => Promise<unknown>>(
  fn: Fn | Promise<unknown>,
  keys?: Keys,
  config?: Config
) => Await<ReturnType<Fn>>
typescript
// Function that returns a promise
const result = suspend((...keys) => anyPromise, keys, config)
// async function
const result = suspend(async (...keys) => { /* ... */ }, keys, config)
// Promise with keys
const result = suspend(anyPromise, keys, config)
// Promise itself is the key
const result = suspend(anyPromise)

suspend 会将控制权交还给 React,并终止渲染阶段。一旦您的 promise 解析完毕,它就会恢复。要使其正常工作,您需要将其包装成一个 <React.Suspense> 块,这需要您设置一个 fallback (可以为 null)。

依赖项(第二个参数)起到缓存键的作用,可以使用任意多个。如果某个条目已在缓存中,使用相同的键调用 suspend 将立即返回该条目,而不会中断渲染阶段。缓存访问与 useMemo 类似,但 遍历组件树。第一个参数必须是一个 Promise,或者返回 Promise 的函数,或者异步函数。它会接收键作为参数。 suspend 将返回已解析的值,而不是一个 Promise!这一点是有保证的, 您不需要检查有效性。错误将冒泡到最近的错误处理器。

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

TypeScript

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言