UNPKG

@rooks/use-effect-once-when

Version:

Runs a callback effect atmost one time when a condition becomes true

28 lines (25 loc) 757 B
import { useRef, useEffect } from 'react'; /** * useEffectOnceWhen hook * * It fires a callback once when a condition is true or become true. * Fires the callback at most one time. * * @param callback The callback to fire * @param when The condition which needs to be true */ function useEffectOnceWhen(callback, when = true) { const hasRunOnceRef = useRef(false); const callbackRef = useRef(callback); useEffect(() => { callbackRef.current = callback; }); useEffect(() => { if (when && !hasRunOnceRef.current) { callbackRef.current(); hasRunOnceRef.current = true; } }, [when]); } export default useEffectOnceWhen; //# sourceMappingURL=index.esm.js.map