@anb98/react-hooks
Version:
Custom hooks for react
40 lines (39 loc) • 1.56 kB
TypeScript
declare type DependencyList = ReadonlyArray<any>;
export declare type UsePromiseOptions<Params, Result> = {
initialData: Result;
deps: DependencyList;
params: Params;
onComplete: (data?: Result, err?: any) => void | Promise<void>;
onFail: (err?: any) => void | Promise<void>;
onSuccess: (data?: Result) => void | Promise<void>;
onUnmount: () => void;
};
export declare type State<T> = {
isSuccess: boolean;
isLoading: boolean;
isError: boolean;
data: T | null;
error: any;
status: 'idle' | 'pending' | 'resolved' | 'rejected';
};
/**
* This hook executes a Promise when calling the promiseHandler function.
* @param promise Promise function to handle
* @param options Initial options
* @returns [state, promiseHandler, resetState]
* @example
* ```
const [state, promiseHandler, resetState ] = usePromise(promise, {
deps:[],
params: [],
initialData: {},
onComplete: (data, err) => {},
onFail: (err) => {},
onSuccess: (data) => {},
onUnmount: () => {},
});
*```
* @see https://www.npmjs.com/package/@anb98/react-hooks#usePromise
*/
declare const usePromise: <PromiseFunction extends (...params: [] | any[]) => Promise<any>>(promise: PromiseFunction, options?: Partial<UsePromiseOptions<Parameters<PromiseFunction>, Awaited<ReturnType<PromiseFunction>>>> | undefined) => readonly [State<Awaited<ReturnType<PromiseFunction>>>, (...promiseParams: [] | Parameters<PromiseFunction>) => Promise<void>, () => void];
export default usePromise;