( fn: T, deps: DependencyList = [] )
| 5 | // Reference: https://github.com/streamich/react-use/blob/master/src/useAsync.ts |
| 6 | |
| 7 | export function useAsync<T extends FunctionReturningPromise>( |
| 8 | fn: T, |
| 9 | deps: DependencyList = [] |
| 10 | ) { |
| 11 | const [state, callback] = useAsyncFn(fn, deps, { |
| 12 | loading: true, |
| 13 | }); |
| 14 | const lockRef = useRef(false); |
| 15 | |
| 16 | useEffect(() => { |
| 17 | if (lockRef.current === true) { |
| 18 | return; |
| 19 | } |
| 20 | |
| 21 | if (deps.length === 0) { |
| 22 | lockRef.current = true; |
| 23 | } |
| 24 | |
| 25 | callback(); |
| 26 | }, [callback]); |
| 27 | |
| 28 | return state; |
| 29 | } |
no test coverage detected