session-desktop/ts/hooks/useInterval.ts

25 lines
589 B
TypeScript

import React from 'react';
export const useInterval = (callback: any, delay: number | null) => {
const savedCallback = React.useRef<any>();
React.useEffect(() => {
savedCallback.current = callback;
}, [callback]);
React.useEffect(() => {
function tick() {
if (savedCallback && savedCallback.current && savedCallback.current) {
savedCallback.current();
}
}
if (delay !== null) {
const id = global.setInterval(tick, delay);
tick();
return () => {
global.clearInterval(id);
};
}
return;
}, [delay]);
};