Skip to content

useRequest

useRequest@yh-ui/request 提供的通用请求 Hook,用于在 Vue 组件中优雅地管理异步请求的整个生命周期:加载状态、错误、重试、防抖/节流等。

基础用法

useRequest 基础用法

返回值

typescript
const {
  data, // ShallowRef<TData | undefined>
  loading, // Ref<boolean>
  error, // ShallowRef<RequestError | undefined>
  params, // Ref<TParams>
  loadingMore, // Ref<boolean>(与分页/加载更多配合)
  noMore, // Ref<boolean>
  run, // (...params: TParams) => Promise<RequestResponse<TData>>
  mutate, // (updater?: TData | ((old?: TData) => TData)) => void
  cancel, // () => void
  refresh, // () => Promise<void>
  loadMore, // () => Promise<void>
  disabled // ComputedRef<boolean>
} = useRequest(service, options)

完整配置项

useRequest(service, options)options 继承自请求库的 RequestOptions(如 baseURLtimeout..),并包含以下 Hook 专用配置:

参数类型默认值说明
manualbooleanfalse是否手动触发,为 true 时需调用 run() 才发请求
defaultParamsTParams[]默认请求参数,非 manual 时首次会用该参数请求
debounceWaitnumber-防抖时间(毫秒),多次调用 run 时防抖
throttleWaitnumber-节流时间(毫秒),多次调用 run 时节流
requestRequest-自定义请求实例
formatResult(response) => TData-格式化响应,从 RequestResponse 中提取业务数据
onSuccess(data, params) => void-请求成功回调
onError(error, params) => void-请求失败回调
onFinally(params) => void-请求完成回调(成功或失败都会执行)

防抖与节流

防抖与节流示例

mutate:本地数据更新 & cancel:取消请求

乐观更新 & 请求取消

轮询(useRequestPolling)

轮询示例

轮询配置项

参数类型默认值说明
pollingbooleanfalse是否开启轮询
pollingIntervalnumber3000轮询间隔(毫秒)
pollingWhenHiddenbooleanfalse页面不可见时是否暂停轮询

其余配置与 useRequest 相同。返回值为 useRequest 的返回值外加 pauseresume

与 SWR / 分页等组合

更多高级用法请参考:

Released under the MIT License.