Intro

无限滚动分页逻辑

Demos

Api

index.d.ts
import type { PagingParamsDTO, PagingResultDTO, PagingService, UseAsyncStateOptions } from '@bowencool/vhooks';
export declare type UseInfiniteScrollOptions<R> = UseAsyncStateOptions<PagingResultDTO<R>, [PagingParamsDTO]> & {
    defaultPageSize?: number;
    isDone?: (res: PagingResultDTO<R>) => boolean;
};
export declare function useInfiniteScroll<RowType>(pagingService: PagingService<RowType>, { defaultPageSize: pageSize, isDone, ...others }?: UseInfiniteScrollOptions<RowType>): {
    /** 原始响应 */
    rawData: import("vue").Ref<PagingResultDTO<RowType> | undefined>;
    /** 合并后的列表 */
    list: import("vue").Ref<RowType[] | undefined>;
    /** 正在刷新第一页的数据 */
    refreshing: import("vue").Ref<boolean>;
    /** 正在加载下一页的数据 */
    loadingMore: import("vue").ComputedRef<boolean>;
    /** 正在请求接口 */
    loading: Readonly<import("vue").Ref<boolean>>;
    /** 接口错误 */
    error: Readonly<import("vue").Ref<Readonly<unknown>>>;
    /** 加载下一页的数据 */
    loadMore: () => Promise<void>;
    /** “暂无数据” */
    empty: import("vue").ComputedRef<boolean>;
    /** 是否已经加载全部 */
    done: import("vue").Ref<boolean>;
    /** 刷新到第一页 */
    refresh: () => Promise<void>;
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27