phanpy/src/utils/useInterval.js
2023-07-13 20:11:23 +08:00

22 lines
585 B
JavaScript

import { useEffect, useRef } from 'preact/hooks';
function useInterval(fn, delay, deps, immediate) {
const savedCallback = useRef(fn);
useEffect(() => {
savedCallback.current = fn;
}, [fn, deps]);
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;