@sanp/ahooks-vue
Version:
40 lines (39 loc) • 1.44 kB
TypeScript
import { Ref, WatchSource } from 'vue-demi';
export declare type noop = (...args: any[]) => void;
export declare type Service<R, P extends any[]> = (...args: P) => Promise<R>;
export declare type RequestService = string | {
[key: string]: any;
};
export declare type CombineService<R, P extends any[]> = RequestService | ((...args: P) => RequestService) | Service<R, P>;
export interface UseRequestResult<R = any, P extends any[] = any[]> {
loading: Ref<boolean>;
data: Ref<R>;
error: Ref<Error | undefined>;
params: Ref<P>;
lastSuccessParams: Ref<P | undefined>;
cancel: () => void;
refresh: () => Promise<any>;
run: (...args: P) => Promise<any>;
}
export interface UseRequestOptions<R = any, P extends any[] = any[]> {
formatResult: (res: any) => R;
manual: boolean;
onSuccess: (data: R, params: P) => void;
onError: (e: Error, params: P) => void;
onFinally: () => void;
defaultLoading: boolean;
loadingDelay: number;
defaultParams: P;
pollingInterval: number;
pollingWhenHidden: boolean;
pollingSinceLastFinished: boolean;
debounceInterval: number;
loadingWhenDebounceStart: boolean;
throttleInterval: number;
initialData: R;
requestMethod: (service: any) => Promise<any>;
ready: Ref<boolean>;
throwOnError: boolean;
refreshDeps: Array<WatchSource>;
refreshOnWindowFocus: boolean;
}