TelegramPWA/src/hooks/useTimeout.ts
2022-03-04 16:20:12 +03:00

20 lines
492 B
TypeScript

import { useEffect, useLayoutEffect, useRef } from '../lib/teact/teact';
function useTimeout(callback: () => void, delay?: number) {
const savedCallback = useRef(callback);
useLayoutEffect(() => {
savedCallback.current = callback;
}, [callback]);
useEffect(() => {
if (typeof delay !== 'number') {
return undefined;
}
const id = setTimeout(() => savedCallback.current(), delay);
return () => clearTimeout(id);
}, [delay]);
}
export default useTimeout;