UNPKG

react-elegant-ui

Version:

Elegant UI components, made by BEM best practices for react

30 lines (29 loc) 947 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useEqualMemo = void 0; var _react = require("react"); var _isEqual = require("../lib/isEqual"); var _usePrevious = require("./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 */ var useEqualMemo = function (factory, deps) { var value = (0, _react.useRef)(); var prevDeps = (0, _usePrevious.usePrevious)(deps, null); // Check to return old value if (deps !== undefined && prevDeps && (deps === prevDeps || deps.every(function (dep, idx) { return (0, _isEqual.isEqual)(dep, prevDeps[idx]); }))) { return value.current; } // Make new value var newValue = factory(); value.current = newValue; return newValue; }; exports.useEqualMemo = useEqualMemo;