import { useEffect, useRef } from 'preact/hooks'; const noop = () => {}; function useInterval(callback, delay, immediate) { const savedCallback = useRef(noop); useEffect(() => { savedCallback.current = callback; }, []); useEffect(() => { if (!immediate || delay === null || delay === false) return; savedCallback.current(); }, [immediate]); useEffect(() => { if (delay === null || delay === false) return; const tick = () => savedCallback.current(); const id = setInterval(tick, delay); return () => clearInterval(id); }, [delay]); } export default useInterval;