mirror of
https://github.com/streamich/react-use.git
synced 2026-01-18 14:06:52 +00:00
32 lines
584 B
TypeScript
32 lines
584 B
TypeScript
import { DependencyList, useEffect } from 'react';
|
|
import useAsyncFn from './useAsyncFn';
|
|
|
|
export type AsyncState<T> =
|
|
| {
|
|
loading: true;
|
|
error?: undefined;
|
|
value?: undefined;
|
|
}
|
|
| {
|
|
loading: false;
|
|
error: Error;
|
|
value?: undefined;
|
|
}
|
|
| {
|
|
loading: false;
|
|
error?: undefined;
|
|
value: T;
|
|
};
|
|
|
|
const useAsync = <T>(fn: () => Promise<T>, deps: DependencyList = []) => {
|
|
const [state, callback] = useAsyncFn(fn, deps);
|
|
|
|
useEffect(() => {
|
|
callback();
|
|
}, [callback]);
|
|
|
|
return state;
|
|
};
|
|
|
|
export default useAsync;
|