TelegramPWA/src/hooks/useInterval.ts
2021-12-31 18:17:32 +01:00

23 lines
569 B
TypeScript

import { useEffect, useLayoutEffect, useRef } from '../lib/teact/teact';
function useInterval(callback: NoneToVoidFunction, delay?: number, noFirst = false) {
const savedCallback = useRef(callback);
useLayoutEffect(() => {
savedCallback.current = callback;
}, [callback]);
useEffect(() => {
if (delay === undefined) {
return undefined;
}
const id = setInterval(() => savedCallback.current(), delay);
if (!noFirst) savedCallback.current();
return () => clearInterval(id);
}, [delay, noFirst]);
}
export default useInterval;