Skip to content

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是否立即执行booleantrue
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>

Released under the MIT License.