@slan-health/taro-vueuse
Version:
taro vue版本hooks
26 lines (24 loc) • 1.17 kB
TypeScript
import { ComputedRef, Ref } from 'vue';
import { Options, QueryResult } from './core/types';
export type DataType = {
list: any[];
[key: string]: any;
};
export type LoadMoreService<R extends DataType> = (data?: R) => Promise<R>;
export type LoadMoreBaseOptions<R> = Pick<Options<R, any>, 'ready' | 'manual' | 'refreshDeps' | 'refreshDepsAction' | 'debounceInterval' | 'debounceOptions' | 'throttleInterval' | 'throttleOptions' | 'errorRetryCount' | 'errorRetryInterval'> & {
dataListKey?: string;
isNoMore?: (data?: R) => boolean;
onBefore?: () => void;
onAfter?: () => void;
onSuccess?: (data: R) => void;
onError?: (error: Error) => void;
};
type LoadMoreQueryResult<R extends DataType> = Pick<QueryResult<R, any>, 'data' | 'loading' | 'error' | 'refresh' | 'refreshAsync' | 'cancel' | 'mutate'> & {
dataList: ComputedRef<R['list']>;
noMore: ComputedRef<boolean>;
loadingMore: Ref<boolean>;
loadMore: () => void;
loadMoreAsync: () => Promise<R>;
};
declare function useLoadMore<R extends DataType>(service: LoadMoreService<R>, options?: LoadMoreBaseOptions<R>): LoadMoreQueryResult<R>;
export default useLoadMore;