export function useDebounce(callback: (...args: any[]) => any, delay: number) { const timeoutRef = useRef<any>(null); useEffect(() => { // Cleanup the previous timeout on re-render return () => { if (timeoutRef.current) { clearTimeout(timeoutRef.current); } }; }, []); const debouncedCallback = (...args: any[]) => { if (timeoutRef.current) { clearTimeout(timeoutRef.current); } timeoutRef.current = setTimeout(() => { callback(...args); }, delay); }; return debouncedCallback; }; function SearchBox(props: { onSearch: (searchText: string) => any }) { const { onSearch } = props; const debouncedSearch = useDebounce(onSearch, 500); return <Input.Search placeholder={translate("filter-search-placeholder")} onChange={(e) => debouncedSearch(e.target.value)} onSearch={onSearch} /> }
825400cookie-checkReact debouncer hook (without deps)