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

20 lines
415 B
TypeScript
Raw Normal View History

2020-07-09 13:00:42 +02:00
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]
)
}