import isEqual from 'lodash/isEqual'; import {DependencyList, useEffect, useState} from 'react'; const emptyDependency: DependencyList = []; export function useEqualMemo(func: () => T, args: DependencyList = emptyDependency): T { const [memoized, memo] = useState(func()); useEffect(() => { const data = func(); if (!isEqual(memoized, data)) { memo(data); } }, [memoized, func, args]); return memoized; }