mirror of
https://github.com/outline/outline.git
synced 2026-06-13 03:14:59 +03:00
084490ba6b
* Add rules * codemod: update-react-imports * Update babelrc
33 lines
712 B
TypeScript
33 lines
712 B
TypeScript
import { useRef, useEffect } from "react";
|
|
|
|
type Callback = () => void;
|
|
|
|
/**
|
|
* Hook to set up an interval that calls a callback.
|
|
*
|
|
* @param callback The callback to call.
|
|
* @param delay The delay in milliseconds.
|
|
*/
|
|
export default function useInterval(callback: Callback, delay: number) {
|
|
const savedCallback = useRef<Callback>();
|
|
|
|
// Remember the latest callback.
|
|
useEffect(() => {
|
|
savedCallback.current = callback;
|
|
}, [callback]);
|
|
|
|
// Set up the interval.
|
|
useEffect(() => {
|
|
function tick() {
|
|
savedCallback.current?.();
|
|
}
|
|
|
|
if (delay !== null) {
|
|
const id = setInterval(tick, delay);
|
|
return () => clearInterval(id);
|
|
}
|
|
|
|
return undefined;
|
|
}, [delay]);
|
|
}
|