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)
: 请求加载时间过长时的回调函数 (seeloadingTimeout
)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。
你还可以使用 全局配置 来提供默认选项。