// TODO: [P1] Dedupe. import { useEffect, useMemo, useRef } from 'react'; import type { DependencyList } from 'react'; export default function useMemoWithPrevious(factory: (prevValue: T | undefined) => T, deps: DependencyList): T { const prevValueRef = useRef(undefined); // We are building a `useMemo`-like hook, `deps` is passed as-is and `factory` is not one fo the dependencies. // eslint-disable-next-line react-hooks/exhaustive-deps const value = useMemo(() => factory(prevValueRef.current), deps); useEffect(() => { prevValueRef.current = value; }); return value; }