Newer
Older
import { useEffect, useState, type DependencyList } from 'react';
export function useAsyncMemo<T>(factory: () => Promise<T> | undefined | null, deps: DependencyList, initial?: T) {
const [val, setVal] = useState<T | undefined>(initial);
useEffect(() => {
let cancel = false;
const promise = factory();
if (promise === undefined || promise === null) return;
promise.then(val => {
if (!cancel) {
setVal(val);
}
});
return () => {
cancel = true;
};
}, deps);
return val;
}