Skip to content

API 选项

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

Parameters(参数)

  • key: 请求的唯一 key string (或者是 function / array / null) (高级用法)
  • fetcher: (可选) 一个请求数据的 Promise 返回函数 (详情)
  • options: (可选) 该 SWR hook 的选项对象

Return Values(返回值)

  • data: 通过 fetcher 用给定的 key 解析出来的数据 (如果没加载是 undefined)
  • error: fetcher 抛出的错误 (或者是 undefined)
  • isValidating: 是否有请求或重新验证加载
  • mutate(data?, shouldRevalidate?): 更改缓存数据的函数

Options(选项)

  • suspense = false: 启用 React Suspense 模式 (详情)
  • fetcher = window.fetch(url).then(res => res.json()): fetcher 函数
  • initialData: 要返回的初始数据 (注意:是每个 hook) (详情)
  • revalidateOnMount: 在挂载组件时启用或禁用自动重新验证 (默认情况下,当没有设置 initialData 时,在挂载时进行重新验证,使用该 flag 强制行为)
  • revalidateOnFocus = true: 窗口聚焦时自动重新验证 (详情)
  • revalidateOnReconnect = true: 浏览器恢复网络连接时自动重新验证 (通过 navigator.onLine) (详情)
  • refreshInterval = 0: 轮询间隔 (默认 disabled) (详情)
  • refreshWhenHidden = false: 窗口不可见时进行轮询 (如果启用了 refreshInterval)
  • refreshWhenOffline = false: 浏览器离线时轮询 (由 navigator.onLine 确定)
  • shouldRetryOnError = true: fetcher 有错误时重试
  • dedupingInterval = 2000: 在该时间段内使用相同的 key 进行重复数据删除请求
  • focusThrottleInterval = 5000: 在一段时间内只重新验证一次
  • loadingTimeout = 3000: 超时触发 onLoadingSlow 事件
  • errorRetryInterval = 5000: 错误重试的时间间隔
  • errorRetryCount: 错误重试的最大次数
  • onLoadingSlow(key, config): 请求加载时间过长时的回调函数 (see loadingTimeout)
  • onSuccess(data, key, config): 请求成功完成时的回调函数
  • onError(err, key, config): 请求返回错误时的回调函数
  • onErrorRetry(err, key, config, revalidate, revalidateOps): 错误重试的处理函数
  • compare(a, b): 比较函数,用来检测返回的数据何时已更改,以防止伪造的重新渲染。默认情况下使用 dequal
  • isPaused(): 用于检测是否暂停重新验证的函数,当返回 true 时将忽略所请求的数据和错误。默认返回 false
💡

网络较慢 (2G, <= 70Kbps) 时, 默认情况下 errorRetryInterval 是 10s, loadingTimeout 是 5s。

你还可以使用 全局配置 来提供默认选项。