MCPcopy Create free account
hub / github.com/LevelUpWeb3/app / useAsyncMemo

Function useAsyncMemo

src/hooks/useAsyncMemo.tsx:5–27  ·  view source on GitHub ↗
(
  factory: () => Promise<T>,
  deps: DependencyList | undefined,
)

Source from the content-addressed store, hash-verified

3import { shallowEquals } from "@/utils";
4
5function useAsyncMemo<T>(
6 factory: () => Promise<T>,
7 deps: DependencyList | undefined,
8): T | undefined {
9 const [res, setRes] = useState<T>();
10 const prevDependencies = useRef<DependencyList>();
11
12 useEffect(() => {
13 if (shallowEquals(deps, prevDependencies.current)) {
14 return;
15 }
16 prevDependencies.current = deps;
17
18 const fetchRes = async () => {
19 const _res = await factory();
20 setRes(_res);
21 };
22
23 fetchRes();
24 }, [deps]);
25
26 return res;
27}
28
29export default useAsyncMemo;

Callers

nothing calls this directly

Calls 2

shallowEqualsFunction · 0.90
fetchResFunction · 0.85

Tested by

no test coverage detected