@daysnap/vue-use
Version:
daysnap vue hooks
40 lines (39 loc) • 1.41 kB
TypeScript
import type { AnyPromiseFn } from '@daysnap/types';
import { type Ref } from 'vue';
export interface UseAsyncTaskOptions<T extends AnyPromiseFn> {
/**
* 是否立即执行 onBeforeMount 执行,默认 false
*/
immediate?: boolean;
/**
* 是否在 onActivated 执行,默认 false
*/
activated?: boolean;
/**
* 立即执行的时候 第一次需要传递的参数
*/
initialParams?: Parameters<T> | (() => Parameters<T>);
/**
* 初始数据
*/
initialValue?: Awaited<ReturnType<T>>;
/**
* 捕获了异常,是否继续抛出,默认 false
*/
throwError?: boolean | (() => boolean);
/**
* 错误回调,返回 false 或者 undefined 的时候,阻断默认错误 error 逻辑
*/
onError?: (err: unknown) => boolean | undefined | Promise<boolean | undefined>;
}
export interface UseAsyncTaskResult<T, D> {
data: Ref<D>;
error: Ref<unknown>;
loading: Ref<boolean>;
trigger: T;
}
/**
* 异步任务执行
*/
export declare function useAsyncTask<T extends AnyPromiseFn>(task: T, options: UseAsyncTaskOptions<T> & Required<Pick<UseAsyncTaskOptions<T>, 'initialValue'>>): UseAsyncTaskResult<T, Awaited<ReturnType<T>>>;
export declare function useAsyncTask<T extends AnyPromiseFn>(task: T, options?: UseAsyncTaskOptions<T>): UseAsyncTaskResult<T, Awaited<ReturnType<T>> | undefined>;