You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

40 lines
1.2 KiB

export interface RequestData<T> {
data: T[];
success?: boolean;
total?: number;
[key: string]: any;
}
export interface UseFetchDataAction<T extends RequestData<any>> {
dataSource: T['data'] | T;
loading: boolean | undefined;
hasMore: boolean;
current: number;
pageSize: number;
total: number;
cancel: () => void;
reload: () => Promise<void>;
fetchMore: () => void;
fullScreen?: () => void;
resetPageIndex: () => void;
reset: () => void;
setPageInfo: (pageInfo: Partial<PageInfo>) => void;
}
interface PageInfo {
hasMore: boolean;
page: number;
pageSize: number;
total: number;
}
declare const useFetchData: <T extends RequestData<any>>(getData: (params: {
pageSize: number;
current: number;
}) => Promise<T>, defaultData?: Partial<T["data"]> | undefined, options?: {
defaultCurrent?: number | undefined;
defaultPageSize?: number | undefined;
effects?: any[] | undefined;
onLoad?: ((dataSource: T["data"]) => void) | undefined;
onRequestError?: ((e: Error) => void) | undefined;
manual: boolean;
} | undefined) => UseFetchDataAction<T>;
export default useFetchData;