You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

23 lines
549 B

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;