最新版本v1.0.63
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(如 baseURL、timeout..),并包含以下 Hook 专用配置:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
manual | boolean | false | 是否手动触发,为 true 时需调用 run() 才发请求 |
defaultParams | TParams | [] | 默认请求参数,非 manual 时首次会用该参数请求 |
debounceWait | number | - | 防抖时间(毫秒),多次调用 run 时防抖 |
throttleWait | number | - | 节流时间(毫秒),多次调用 run 时节流 |
request | Request | - | 自定义请求实例 |
formatResult | (response) => TData | - | 格式化响应,从 RequestResponse 中提取业务数据 |
onSuccess | (data, params) => void | - | 请求成功回调 |
onError | (error, params) => void | - | 请求失败回调 |
onFinally | (params) => void | - | 请求完成回调(成功或失败都会执行) |
防抖与节流
防抖与节流示例
mutate:本地数据更新 & cancel:取消请求
乐观更新 & 请求取消
轮询(useRequestPolling)
轮询示例
轮询配置项
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
polling | boolean | false | 是否开启轮询 |
pollingInterval | number | 3000 | 轮询间隔(毫秒) |
pollingWhenHidden | boolean | false | 页面不可见时是否暂停轮询 |
其余配置与 useRequest 相同。返回值为 useRequest 的返回值外加 pause、resume。
与 SWR / 分页等组合
更多高级用法请参考:
- useRequestSWR - 基于
useRequest的 SWR 缓存模式 - usePagination - 分页请求管理
- useLoadMore - 无限滚动 / 加载更多
- useQueue - 请求队列与并发控制