UNPKG

minh-custom-hooks-release

Version:

My custom hooks for working easier while developing react web app

34 lines (33 loc) 1.56 kB
import { DependencyList } from 'react'; import { UnwrapPromise } from './useTask'; export type UseTaskEffectProps<TTask extends (...args: []) => Promise<any>, TError extends any = any> = { task: TTask; deps: DependencyList | string | number; enabled?: boolean; immediateFirstFetch?: boolean; loadingAtInit?: boolean; startLoadingOnBeforeStart?: boolean; onBeforeStart?: () => Promise<boolean>; onInit?: (refetch: () => any, cancel: () => void, reset: () => void) => void; onSuccess?(data: UnwrapPromise<ReturnType<TTask>> | undefined): void; onError?(error: TError | undefined): void; onFinally?(): void; preserve?: boolean; preserveWhenError?: boolean; debounceTime?: number; resetOnUnmount?: boolean; }; export default function useTaskEffect<TTask extends (...args: []) => Promise<any>, TError extends any>({ task, onBeforeStart, onInit, onSuccess, onError, onFinally, preserve, preserveWhenError, deps, enabled, loadingAtInit, startLoadingOnBeforeStart, debounceTime, resetOnUnmount, immediateFirstFetch, }: UseTaskEffectProps<TTask, TError>): { data: UnwrapPromise<ReturnType<TTask>> | undefined; error: TError | undefined; state: "IDLE" | "SUCCESS" | "CANCELED" | "PENDING" | "FAIL"; isIdle: boolean; isLoading: boolean; isSuccess: boolean; isError: boolean; isEnabled: boolean; refetch: () => void; refetchAsync: (() => Promise<UnwrapPromise<ReturnType<TTask>> | undefined>) | (() => Promise<void>); cancel: () => void; reset: () => void; };