@alextewpin/use-promise
Version:
Hook for declarative promises. Useful for fetching data, sending forms and doing other async stuff right in component. Tiny, easy to use, TypeScript definitions included. Inspired by outstanding [react-async](https://www.npmjs.com/package/react-async) lib
17 lines (16 loc) • 692 B
TypeScript
export interface PromiseConfig<Data, Payload extends unknown[]> {
promiseThunk(...payload: Payload): Promise<Data>;
onResolve?(data: Data, ...payload: Payload): void;
onReject?(error: Error, ...payload: Payload): void;
}
interface InternalState<Data, Payload> {
data?: Data;
error?: Error;
payload?: Payload;
isPending: boolean;
}
export interface PromiseState<Data, Payload extends unknown[]> extends InternalState<Data, Payload> {
run: (...payload: Payload) => void;
}
declare const usePromise: <Data, Payload extends unknown[]>({ promiseThunk, onResolve, onReject, }: PromiseConfig<Data, Payload>) => PromiseState<Data, Payload>;
export default usePromise;