Kode-cli/src/hooks/useInterval.ts
2025-08-10 19:57:17 +08:00

26 lines
657 B
TypeScript

import { useEffect, useRef } from 'react'
/**
* A custom hook that runs a callback at a specified interval.
* The interval is cleared when the component unmounts.
* The interval is also cleared and restarted if the delay changes.
*/
export function useInterval(callback: () => void, delay: number): void {
const savedCallback = useRef(callback)
// Remember the latest callback
useEffect(() => {
savedCallback.current = callback
}, [callback])
// Set up the interval
useEffect(() => {
function tick() {
savedCallback.current()
}
const id = setInterval(tick, delay)
return () => clearInterval(id)
}, [delay])
}