useRequest

一个管理异步数据请求的 Hook.

API 有改动,见ahooks

代码演示

基础用法

手动执行

轮询

  • 通过设置 options.pollingWhenHidden=false ,在屏幕不可见时,暂时暂停定时任务。
  • 通过 run / cancel 来 开启/停止 轮询。
  • options.manual=true 时,需要第一次执行 run 后,才开始轮询。
  • options.pollingSinceLastFinished=false时,每隔pollingIntervalms 都会执行一次请求,而不是等上次请求结束。

防抖 Debounce

  • options.loadingWhenDebounceStart=false,loading 不会在第一时间变成true,要等到debounceIntervalms 后,即函数真正执行时。

节流 Throttle

Loading Delay

Basic API

const {
  data,
  error,
  loading,
  run,
  params,
  cancel,
  refresh,
  fetches,
  lastSuccessParams,
} = useRequest(service, {
  formatResult,
  manual,
  onSuccess,
  onError,
  defaultLoading,
  loadingDelay,
  defaultParams,
  pollingInterval,
  pollingWhenHidden,
  pollingSinceLastFinished,
  refreshOnWindowFocus,
  focusTimespan,
  debounceInterval,
  loadingWhenDebounceStart,
  throttleInterval,
  initialData,
  requestMethod,
  ready,
  throwOnError,
  refreshDeps, // v0.9 新增
  refreshOnWindowFocus, // v0.9 新增
});

Result

参数说明类型
data
  • service 返回的数据,默认为 undefined
  • 如果有 formatResult, 则该数据为被格式化后的数据。
undefined / any
errorservice 抛出的异常,默认为 undefinedundefined / Error
loadingservice 是否正在执行boolean
run
  • 手动触发 service 执行,参数会传递给 service
  • debounce 模式与 throttle 模式返回值为 Promise<null>
(...args: any[]) => Promise
params当次执行的 service 的参数数组。比如你触发了 run(1, 2, 3),则 params 等于 [1, 2, 3]any[]
lastSuccessParamsparams类似,但是只有成功执行才赋值。any[]
cancel
  • 取消当前请求
  • 如果有轮询,停止
() => void
refresh使用上一次的 params,重新执行 service() => Promise

Params

所有的 Options 均是可选的。

参数说明类型默认值
manual
  • 默认 false。 即在初始化时自动执行 service。
  • 如果设置为 true,则需要手动调用 run 触发执行。
booleanfalse
initialData默认的 dataany-
formatResult格式化请求结果(response: any) => any-
onSuccess
  • service resolve 时触发,参数为 dataparams
  • 如果有 formatResult ,则 data 为格式化后数据。
(data: any, params: any[]) => void-
onErrorservice 报错时触发,参数为 errorparams(error: Error, params: any[]) => void-
defaultParams如果 manual=false ,自动执行 run 的时候,默认带上的参数any[]-
loadingDelay设置显示 loading 的延迟时间,避免闪烁number-
pollingInterval轮询间隔,单位为毫秒。设置后,将进入轮询模式,定时触发 runnumber-
pollingSinceLastFinished
  • 轮询开始的时间,默认是 true,即等到上次请求结束,再经过pollingIntervalms 才开始执行
  • 如果设置为 false , 会每隔pollingInterval开始执行,不管上次请求结束时间。
booleantrue
pollingWhenHidden
  • 在页面隐藏时,是否继续轮询。默认为 true,即不会停止轮询
  • 如果设置为 false , 在页面隐藏时会暂时停止轮询,页面重新显示时继续上次轮询
booleantrue
refreshOnWindowFocus
  • 在屏幕重新获取焦点或重新显示时,是否重新发起请求。默认为 false,即不会重新发起请求。
  • 如果设置为 true,在屏幕重新聚焦或重新显示时,会重新发起请求。
booleanfalse
debounceInterval防抖间隔, 单位为毫秒,设置后,请求进入防抖模式。number-
loadingWhenDebounceStart是否在 debounce 过的run函数执行的第一时间将 loading 置为truebooleantrue
throttleInterval节流间隔, 单位为毫秒,设置后,请求进入节流模式。number-
throwOnError如果 service 报错,我们会帮你捕获并打印日志,如果你需要自己处理异常,可以设置 throwOnError 为 truebooleanfalse
refreshOnWindowFocus v0.9如在屏幕重新聚焦或重新显示时,会重新发起请求。booleanfalse
refreshDeps v0.9watch 到 refreshDeps 变化,会触发 service 重新执行。WatchSource[][]

最近更新: