use-lodash-debounce-throttle
Version:
Bring debounce & throttle of lodash version to react-hooks
25 lines (20 loc) • 593 B
JavaScript
import { useRef } from "react";
export default function useStableMemo(nextCreate, deps) {
var valueRef = useRef(undefined);
var depsRef = 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;
}