@modern-kit/react
Version:
21 lines (18 loc) • 637 B
JavaScript
import { useRef, useEffect } from 'react';
import { isFunction } from '@modern-kit/utils';
function useConditionalEffect(effectCallback, deps, condition) {
const prevDeps = useRef(void 0);
const signal = useRef(0);
const shouldRunEffect = isFunction(condition) ? condition(prevDeps.current, deps) : condition;
useEffect(
() => {
if (!shouldRunEffect) return;
return effectCallback();
},
// eslint-disable-next-line react-hooks/exhaustive-deps
[shouldRunEffect ? ++signal.current : signal.current]
);
prevDeps.current = deps;
}
export { useConditionalEffect };
//# sourceMappingURL=index.mjs.map