use-lodash-debounce-throttle
Version:
Bring debounce & throttle of lodash version to react-hooks
33 lines (25 loc) • 719 B
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = useStableMemo;
var _react = require("react");
function useStableMemo(nextCreate, deps) {
var valueRef = (0, _react.useRef)(undefined);
var depsRef = (0, _react.useRef)(undefined);
if (depsRef.current && deps && areHookInputsEqual(deps, depsRef.current)) {
return valueRef.current;
}
valueRef.current = nextCreate();
depsRef.current = deps;
return valueRef.current;
}
function areHookInputsEqual(nextDeps, prevDeps) {
for (var i = 0; i < prevDeps.length && i < nextDeps.length; i++) {
if (Object.is(nextDeps[i], prevDeps[i])) {
continue;
}
return false;
}
return true;
}