guesstimate/client/src/hooks/use-debounce.tsx

20 lines
415 B
TypeScript

import { useMemo, useState } from "react";
export default function useDebounce(func: Function, delay: number) {
const [id, setId] = useState<number|null>(null)
return useMemo(
(...args) => {
if (id) {
clearTimeout(id)
} else {
setId(
window.setTimeout(() => {
setId(null)
func(...args)
}, delay)
)
}
}, [func]
)
}