as-app/src/hooks/useShallowMemo.js

12 lines
286 B
JavaScript

import { deepEqual } from "fast-equals";
import { useRef } from "react";
export default function useShallowMemo(fn, deps) {
const ref = useRef();
if (!ref.current || !deepEqual(ref.current.deps, deps)) {
ref.current = { value: fn(), deps };
}
return ref.current.value;
}