import { useEffect, useRef } from 'react'; import isEqual from 'lodash/isEqual'; function useDeepCompareMemoize(value: T) { const ref = useRef(); if (!isEqual(value, ref.current)) { ref.current = value; } return ref.current; } export function useDeepCompareEffect( callback: () => void | (() => void), dependencies: any[] ) { // eslint-disable-next-line react-hooks/exhaustive-deps useEffect(callback, dependencies.map(useDeepCompareMemoize)); }