usePageRequest 分页请求
用于处理分页数据请求的组合函数,专门用于列表页面的分页查询。
类型定义
typescript
interface PageRequestConfig<T, K extends keyof T, K2 extends keyof T, P> {
initialParams: P
beforeSend?: (params: P) => P | ((params: P) => Promise<P>)
listKey?: K
totalKey?: K2
immediate?: boolean
onSuccess?: (response: T[K]) => void
onError?: (error: any) => void
onComplete?: () => void
}
interface PageRequestReturn<T, K extends keyof T, K2 extends keyof T, P> {
loading: Ref<boolean>
params: Ref<P> | Ref<UnwrapRef<P>>
data: Ref<T[K]> | Ref<UnwrapRef<T[K]>>
total: Ref<T[K2]>
send: () => Promise<void>
}
// 函数重载签名
function usePageRequest<
T extends Record<string, any>,
P = Record<string, any>,
>(
methodHandler: (params: P) => Promise<T>,
config: Omit<PageRequestConfig<T, 'list', 'total', P>, 'listKey' | 'totalKey'>
): PageRequestReturn<T, 'list', 'total', P>
function usePageRequest<
T extends Record<string, any>,
K extends keyof T,
K2 extends keyof T,
P = Record<string, any>,
>(
methodHandler: (params: P) => Promise<T>,
config: PageRequestConfig<T, K, K2, P>
): PageRequestReturn<T, K, K2, P>
参数
参数 | 说明 | 类型 | 默认值 |
---|---|---|---|
methodHandler | 请求函数 | (params: P) => Promise<T> | — |
config | 配置对象 | PageRequestConfig<T, K, K2, P> | — |
Config 选项
属性 | 说明 | 类型 | 默认值 |
---|---|---|---|
initialParams | 初始参数(必须包含分页信息) | P | — |
beforeSend | 请求前的参数处理函数 | (params: P) => P | ((params: P) => Promise<P>) | — |
listKey | 响应数据中列表字段名 | K | 'list' |
totalKey | 响应数据中总数字段名 | K2 | 'total' |
immediate | 是否立即执行 | boolean | true |
onSuccess | 请求成功回调 | (response: T[K]) => void | — |
onError | 请求失败回调 | (error: any) => void | — |
onComplete | 请求完成回调 | () => void | — |
返回值
属性 | 说明 | 类型 |
---|---|---|
loading | 加载状态 | Ref<boolean> |
params | 请求参数 | Ref<P> | Ref<UnwrapRef<P>> |
data | 列表数据 | Ref<T[K]> | Ref<UnwrapRef<T[K]>> |
total | 数据总数 | Ref<T[K2]> |
send | 发送请求函数 | () => Promise<void> |