ramimu's picture
Upload 586 files
1c72248 verified
raw
history blame contribute delete
484 Bytes
import { useEffect, useRef } from 'react';
export function useFromNull(effect: () => void | (() => void), deps: Array<any | null | undefined>) {
const prevDepsRef = useRef<(any | null | undefined)[]>([]);
useEffect(() => {
const shouldRun = deps.some((dep, i) => prevDepsRef.current[i] == null && dep != null);
if (shouldRun) {
const cleanup = effect();
prevDepsRef.current = deps;
return cleanup;
}
prevDepsRef.current = deps;
}, deps);
}