Spaces:
Paused
Paused
File size: 484 Bytes
1c72248 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
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);
}
|