SWR(stale-while-revalidate): 一种 http 缓存失效策略。首先从缓存中返回数据(过期的), 同时发送 fetch 请求(重新验证), 最后得到最新数据。

概览

  1. import useSWR from 'swr';
  2. function Profile() {
  3. const {data, error} = useSWR('/api/user', fetcher);
  4. if (error) return (<div>failed to load </div>);
  5. if (!data) return (<div>loading</div>);
  6. return (
  7. <div>data</div>
  8. )
  9. }

useSWR hook 接受一个字符串 key 和一个函数 fetcherkey 是数据的唯一标识符(通常是 API URL),并传递给 fetcherfetcher 可以是任何返回数据的异步函数,你可以使用原生的 fetch 或 Axios 之类的工具。
基于请求的状态,这个 hook 返回 2 个值:dataerror

特性

  • 面向 JAMStack
  • 极速、轻量、可重用 的数据请求
  • 内置 缓存、重复请求去除
  • 实时 体验
  • 传输、协议不可知
  • TypeScript ready
  • React Native

    性能体验

  • 快速页面导航

  • 间隔轮询
  • 数据依赖
  • 聚焦时重新验证
  • 网络恢复时重新验证
  • 本地缓存更新
  • 智能错误重试
  • 分页和滚动位置恢复
  • React Suspense