on 703ff86 help sign in
bridge/src/lib/useDeepEqualReference.js
22 lines 561 B history raw
1import { useRef } from 'react';
2import { isEqual } from 'lodash';
4import usePreviousValue from './usePreviousValue';
6// changes the referential identity of value on deep equality change
7export default function useDeepEqualReference(value) {
8 const ref = useRef(value);
10 // track the old value of the config set
11 const prevValue = usePreviousValue(value);
13 // then compare equality
14 const areEqual = isEqual(value, prevValue);
16 // if equality changes, give value a new identity
17 if (!areEqual) {
18 ref.current = value;
19 }
21 return ref.current;