0Pricing
React Academy · Lektion

Asynchrone Vorschläge mit Debounce

Während der Eingabe Vorschläge per API abrufen und die Anfragen per Debounce reduzieren

Asynchrone Vorschläge mit Debounce ist eine kostenlose React Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des React Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.

Statischen Filter durch API-Abruf ersetzen

Filtern Sie nicht länger ein lokales Array, sondern rufen Sie einen API-Endpunkt auf, der anhand der Abfrage passende Vorschläge zurückgibt. Der API-Aufruf gehört in einen useEffect, der vom entprellten Eingabewert abhängt. Dadurch wird die Verantwortung für das Filtern auf den Server verlagert, was Fuzzy Matching, Ranking und Vorschläge aus einem deutlich größeren Datensatz ermöglicht.

Neuer State für Lade- und Fehlerstatus

Fügen Sie dem Autocomplete zwei neue State-Variablen hinzu: isLoading (boolean), um während des Fetch-Vorgangs einen Ladeindikator anzuzeigen, und error (string oder null), um bei einem fehlgeschlagenen Fetch eine Fehlermeldung darzustellen. So erhalten Benutzer Feedback zum asynchronen Vorgang, statt sich zu fragen, warum keine Vorschläge erscheinen.

Der Fetch-Effekt

Setzen Sie im Fetch-useEffect zu Beginn setIsLoading(true) und setError(null), rufen Sie anschließend fetch(url) auf, verarbeiten Sie das JSON, rufen Sie setSuggestions(data) auf und setzen Sie setIsLoading(false) schließlich in einem finally-Block oder nach beiden Pfaden für Erfolg und Fehler. Das Abhängigkeits-Array des Effekts enthält ausschließlich debouncedInputValue.

Anfragen mit AbortController abbrechen

Erstellen Sie am Anfang des Effekts einen neuen AbortController und übergeben Sie controller.signal an die Fetch-Optionen. Rufen Sie in der Bereinigungsfunktion controller.abort() auf. Wenn der Benutzer Text eingibt und sich der entprellte Wert ändert, wird der vorherige Fetch abgebrochen, bevor der neue beginnt. So verhindern Sie, dass veraltete Ergebnisse in der falschen Reihenfolge eintreffen.

Abbruchfehler behandeln

Wenn ein Fetch abgebrochen wird, wird er mit einer DOMException zurückgewiesen, deren Name AbortError lautet. Prüfen Sie im catch-Block if (err.name === 'AbortError') return;, um abgebrochene Fetches stillschweigend zu ignorieren. Behandeln Sie nur echte Netzwerk- oder API-Fehler, die dem Benutzer angezeigt werden sollten.

Verwaltung des isLoading-Status

Setzen Sie isLoading vor dem Fetch auf true und nach dessen erfolgreichem Abschluss oder Fehlschlagen auf false. Verwenden Sie einen finally-Block, damit der Status immer zurückgesetzt wird: fetch(url).then(...).catch(...).finally(() => setIsLoading(false)). Ohne den finally-Block würde ein Fetch-Fehler den Ladeindikator dauerhaft anzeigen.

Ladeindikator im Dropdown

Wenn isLoading true ist und das Eingabefeld Text enthält, zeigen Sie das Dropdown mit einem zentrierten Ladeindikator anstelle der Vorschlagsliste an. So wissen Benutzer, dass die Ergebnisse geladen werden. Sobald der Ladevorgang beendet ist und Vorschläge eingetroffen sind, ersetzen Sie den Ladeindikator durch die tatsächlichen Vorschlagselemente.

Fehlerstatus im Dropdown

Wenn error nicht null ist, zeigen Sie das Dropdown mit der Fehlermeldung anstelle der Vorschläge an. Eine Meldung wie "Vorschläge konnten nicht geladen werden. Bitte versuchen Sie es erneut." ist freundlicher als eine unveränderte Fehlermeldung. Optional können Sie eine Schaltfläche zum erneuten Versuch hinzufügen, die den Fetch manuell erneut ausführt.

Mindestanzahl an Zeichen

Vermeiden Sie Fetches für leere Zeichenfolgen oder sehr kurze Abfragen, die zu viele irrelevante Ergebnisse liefern. Sichern Sie den Anfang des Effekts ab: if (debouncedInputValue.length < 2) { setSuggestions([]); return; }. Dadurch reduzieren Sie unnötige API-Aufrufe und verhindern, dass ein einzelnes Zeichen eine überwältigende Ergebnisliste erzeugt.

Geladene Ergebnisse zwischenspeichern

Speichern Sie geladene Ergebnisse in einer useRef-Map: const cache = useRef(new Map()). Prüfen Sie vor dem Fetch if (cache.current.has(query)) { setSuggestions(cache.current.get(query)); return; }. Speichern Sie das Ergebnis nach einem erfolgreichen Fetch. So vermeiden Sie wiederholte Netzwerkanfragen für Abfragen, die der Benutzer bereits eingegeben hat.

Empfohlene Debounce-Verzögerung

Für Autocomplete ist eine Debounce-Verzögerung von 200–300 ms optimal. Kürzere Verzögerungen (unter 200 ms) lösen bei Benutzern, die schnell tippen, zu viele Anfragen aus. Längere Verzögerungen (über 400 ms) lassen die Vorschläge träge und un responsiv wirken. 250 ms ist ein häufig verwendeter Standardwert in produktiven Autocomplete-Implementierungen.

AbortController im Autocomplete

Warum ist AbortController in einem Autocomplete mit Debounce, das Daten von einer API abruft, wichtig?

Zusammenfassung der Lektion: Asynchrone Vorschläge mit Debounce

Ersetzen Sie das statische Filtern durch einen API-Fetch innerhalb eines useEffect, der vom entprellten Wert abhängt. Verwenden Sie AbortController, um veraltete Anfragen abzubrechen. Fügen Sie isLoading- und error-Status für Feedback an die Benutzer hinzu. Legen Sie eine Mindestanzahl an Zeichen fest, um übermäßige Aufrufe zu vermeiden. Speichern Sie Ergebnisse in einer Ref zwischen, um redundante Netzwerkanfragen zu überspringen.

Häufig gestellte Fragen

Ist die Lektion „Asynchrone Vorschläge mit Debounce“ kostenlos?

Ja — der vollständige Text von „Asynchrone Vorschläge mit Debounce“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des React Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Asynchrone Vorschläge mit Debounce“?

Während der Eingabe Vorschläge per API abrufen und die Anfragen per Debounce reduzieren Du übst React Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um React Academy zu starten?

Keine Vorkenntnisse erforderlich. React Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Asynchrone Vorschläge mit Debounce“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser React Academy-Lektion Code schreiben und ausführen?

Ja. Jede React Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Kontrolliertes Input-Feld mit Vorschlagsliste
  2. Tastaturnavigation in Vorschlagslisten
  3. Asynchrone Vorschläge mit Debounce
  4. Barrierefreiheit für Autocomplete-Widgets
← Zurück zu React Academy