└── useDebounce.js /useDebounce.js: -------------------------------------------------------------------------------- 1 | import { useRef, useCallback } from 'react'; 2 | 3 | const useDebounce = (callback, delay) => { 4 | const timer = useRef(null); 5 | 6 | const debouncedCallback = useCallback( 7 | (...args) => { 8 | if (timer.current) { 9 | clearTimeout(timer.current); 10 | } 11 | 12 | timer.current = setTimeout(() => { 13 | callback(...args); 14 | }, delay); 15 | }, 16 | [callback, delay] 17 | ); 18 | 19 | return debouncedCallback; 20 | }; 21 | 22 | export default useDebounce; 23 | --------------------------------------------------------------------------------