import { useEffect, useRef } from 'react'; import isEqual from 'lodash.isequal'; function deepCompareEquals(a, b) { return isEqual(a, b); } function useDeepCompareMemoize(value) { var ref = useRef(); // it can be done by using useMemo as well // but useRef is rather cleaner and easier if (!deepCompareEquals(value, ref.current)) { ref.current = value; } return ref.current; } function useDeepCompareEffect(effect, dependencies) { useEffect(effect, useDeepCompareMemoize(dependencies)); } export default useDeepCompareEffect;