UNPKG

@fallen-zero/use

Version:
62 lines (59 loc) 1.59 kB
import { Ref } from 'vue'; /** 下拉滚动加载列表 * @param api 请求方法 * @param [params] 请求参数, 默认 * @param {object} [options] * @param {boolean} [options.immediate] 是否立即执行 * @example * const listApi = ({ page, limit }: { page: number; limit: number }) => { return new Promise<{ list: number[]; total: number; }>((resolve) => { setTimeout(() => { if (page <= 5) { resolve({ list: Array(limit) .fill(0) .map((_, index) => (page - 1) * limit + index + 1), total: 0, }); return; } resolve({ list: Array(limit - 3) .fill(0) .map((_, index) => (page - 1) * limit + index + 1), total: 0, }); }, 500); }); }; const { list, loading, finished, refreshing, onLoad, reset } = useApiList(listApi); */ export declare const useApiList: <T, P extends { page?: number | undefined; limit?: number | undefined; }>(api: (params: P) => Promise<{ list: T[]; total: number; }>, params?: P | undefined, { immediate }?: { immediate?: boolean | undefined; }) => { list: Ref<T[]>; /** 总数 */ total: Ref<number>; /** 加载状态 */ loading: Ref<boolean>; /** 是否请求结束 */ finished: Ref<boolean>; /** 是否正在刷新 */ refreshing: Ref<boolean>; /** 修改请求参数 */ setParams: (_params: Partial<Omit<P, "page">>) => Promise<void>; /** 加载方法 */ onLoad: () => Promise<void>; /** 重置 */ reset: () => Promise<void>; };