UNPKG

react-elegant-ui

Version:

Elegant UI components, made by BEM best practices for react

23 lines 763 B
import { useRef } from 'react'; import { isEqual } from '../lib/isEqual'; import { usePrevious } from './usePrevious'; /** * It work like standard `useMemo`, but deep compare deps to equal * * It useful when you every time create new object (for example use destructuring), * but you wish recalculate something only with real changes */ export var useEqualMemo = function (factory, deps) { var value = useRef(); var prevDeps = usePrevious(deps, null); // Check to return old value if (deps !== undefined && prevDeps && (deps === prevDeps || deps.every(function (dep, idx) { return isEqual(dep, prevDeps[idx]); }))) { return value.current; } // Make new value var newValue = factory(); value.current = newValue; return newValue; };