kafka-ui/kafka-ui-react-app/src/lib/hooks/useInterval.ts
2020-11-11 12:36:44 +03:00

25 lines
576 B
TypeScript

import React from 'react';
type Callback = () => any;
const useInterval = (callback: Callback, delay: number) => {
const savedCallback = React.useRef<Callback>();
React.useEffect(() => {
savedCallback.current = callback;
}, [callback]);
// eslint-disable-next-line consistent-return
React.useEffect(() => {
const tick = () => {
if (savedCallback.current) savedCallback.current();
};
if (delay !== null) {
const id = setInterval(tick, delay);
return () => clearInterval(id);
}
}, [delay]);
};
export default useInterval;