this repo has no description
at main 22 lines 585 B view raw
1import { useEffect, useRef } from 'preact/hooks'; 2 3function useInterval(fn, delay, deps, immediate) { 4 const savedCallback = useRef(fn); 5 useEffect(() => { 6 savedCallback.current = fn; 7 }, [fn, deps]); 8 9 useEffect(() => { 10 if (!immediate || delay === null || delay === false) return; 11 savedCallback.current(); 12 }, [immediate]); 13 14 useEffect(() => { 15 if (delay === null || delay === false) return; 16 const tick = () => savedCallback.current(); 17 const id = setInterval(tick, delay); 18 return () => clearInterval(id); 19 }, [delay]); 20} 21 22export default useInterval;