useDebounce.ts
20 lines
| 1 | import {useState, useEffect} from 'react'; |
| 2 | |
| 3 | // hook to debounce a variable. see https://usehooks.com/useDebounce/ |
| 4 | |
| 5 | export default function useDebounce(value: any, delay: number) { |
| 6 | const [debouncedValue, setDebouncedValue] = useState(value); |
| 7 | useEffect( |
| 8 | () => { |
| 9 | const handler = setTimeout(() => { |
| 10 | setDebouncedValue(value); |
| 11 | }, delay); |
| 12 | return () => { |
| 13 | clearTimeout(handler); |
| 14 | }; |
| 15 | }, |
| 16 | [value, delay] |
| 17 | ); |
| 18 | return debouncedValue; |
| 19 | } |
| 20 |