phanpy/src/utils/useInterval.js

23 wiersze
585 B
JavaScript

import { useEffect, useRef } from 'preact/hooks';
2023-05-05 09:53:16 +00:00
function useInterval(fn, delay, deps, immediate) {
const savedCallback = useRef(fn);
useEffect(() => {
2023-05-05 09:53:16 +00:00
savedCallback.current = fn;
2023-07-13 12:11:23 +00:00
}, [fn, deps]);
2023-02-08 11:11:33 +00:00
useEffect(() => {
if (!immediate || delay === null || delay === false) return;
savedCallback.current();
}, [immediate]);
useEffect(() => {
2023-02-08 11:11:33 +00:00
if (delay === null || delay === false) return;
const tick = () => savedCallback.current();
const id = setInterval(tick, delay);
return () => clearInterval(id);
}, [delay]);
}
2023-02-08 11:11:33 +00:00
export default useInterval;