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。
您也可以使用 全局配置 提供默认选项。