跳至内容
文档
API

API

const { data, error, isLoading, isValidating, mutate } = useSWR(key, fetcher, options)

参数

  • key: 请求的唯一键字符串(或函数 / 数组 / null) (详情)(高级用法)
  • fetcher: (可选) 用于获取数据的 Promise 返回函数 (详情)
  • options: (可选) 此 SWR 钩子的选项对象

返回值

  • data: 由 fetcher 解析的给定键的数据(如果未加载,则为 undefined)
  • error: 由 fetcher 抛出的错误(或 undefined)
  • isLoading: 如果存在正在进行的请求且没有“已加载的数据”。回退数据和先前数据不被视为“已加载的数据”
  • isValidating: 如果存在请求或重新验证加载
  • mutate(data?, options?): 用于修改缓存数据的函数 (详情)

更多信息请访问 这里.

选项

  • suspense = false: 启用 React Suspense 模式 (详情)
  • fetcher(args): fetcher 函数
  • revalidateIfStale = true: 即使存在陈旧数据,也会自动重新验证 (详情)
  • revalidateOnMount: 启用或禁用组件挂载时的自动重新验证 (详情)
  • revalidateOnFocus = true: 当窗口获得焦点时自动重新验证 (详情)
  • revalidateOnReconnect = true: 当浏览器重新获得网络连接时自动重新验证(通过 navigator.onLine) (详情)
  • refreshInterval (详情)
    • 默认情况下禁用: refreshInterval = 0
    • 如果设置为数字,则以毫秒为单位的轮询间隔
    • 如果设置为函数,则该函数将接收最新的数据并应返回以毫秒为单位的间隔
  • refreshWhenHidden = false: 窗口不可见时轮询(如果 refreshInterval 已启用)
  • refreshWhenOffline = false: 浏览器离线时轮询(由 navigator.onLine 确定)
  • shouldRetryOnError = true: fetcher 发生错误时重试
  • dedupingInterval = 2000: 在此时间跨度内以毫秒为单位对具有相同键的请求进行去重
  • focusThrottleInterval = 5000: 在以毫秒为单位的时间跨度内只重新验证一次
  • loadingTimeout = 3000: 以毫秒为单位的超时时间,用于触发 onLoadingSlow 事件
  • errorRetryInterval = 5000: 以毫秒为单位的错误重试间隔
  • errorRetryCount: 最大错误重试次数
  • fallback: 多个回退数据的键值对象 (示例)
  • fallbackData: 要返回的初始数据(注意:这是每个钩子的)
  • keepPreviousData = false: 返回先前键的数据,直到新的数据加载完毕 (详情)
  • onLoadingSlow(key, config): 当请求加载时间过长时调用的回调函数(参见 loadingTimeout
  • onSuccess(data, key, config): 请求成功完成时调用的回调函数
  • onError(err, key, config): 请求返回错误时的回调函数
  • onErrorRetry(err, key, config, revalidate, revalidateOps): 错误重试的处理程序
  • onDiscarded(key): 当请求由于竞争条件而被忽略时的回调函数
  • compare(a, b): 用于检测返回数据是否已更改的比较函数,以避免无意义的重新渲染。 默认情况下,使用 stable-hash (opens in a new tab)
  • isPaused(): 用于检测是否暂停重新验证的函数,当返回 true 时将忽略获取的数据和错误。 默认情况下返回 false
  • use: 中间件函数数组 (详情)
💡

在慢速网络(2G,<=70Kbps)下,errorRetryInterval 默认情况下将为 10s,而 loadingTimeout 将为 5s。

您也可以使用 全局配置 提供默认选项。