Input onChange → setQuery → useEffect с debounce. Реализация: useEffect(() => { const timer = setTimeout(() => fetchResults(query), 300); return () => clearTimeout(timer); }, [query]). AbortController для отмены предыдущего запроса. Loading spinner во время fetch. Показывай результаты в dropdown или inline. Кеширование: Map с query → results. Минимальная длина: не ищи по 1 символу. Highlight совпадений: split текст по query, wrap в . Empty state и error handling. React Query/SWR упрощают кеширование и дедупликацию.
Как реализовать search с debounce?
Junior
288 просмотровAFK Offer AI
Как работает React.lazy и Suspense для code splitting?