0Pricing
React Academy · Lektion

useTransition für blockierungsfreie UI-Updates

Umschließen Sie aufwendige State-Updates mit startTransition, damit die UI reaktionsfähig bleibt.

useTransition für blockierungsfreie UI-Updates ist eine kostenlose React Academy-Lektion auf CoddyKit. Dies ist Lektion 2 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.

Willkommen

In dieser Lektion verwenden Sie den useTransition-Hook, um aufwendige State-Aktualisierungen als nicht dringend zu kennzeichnen. So bleibt die Benutzeroberfläche reaktionsfähig, während umfangreiches Rendering im Hintergrund stattfindet.

Das Problem blockierender Aktualisierungen

Wenn Sie in einem Suchfeld tippen, das eine große Liste filtert, muss React die gesamte gefilterte Liste bei jeder Eingabe neu rendern. Dadurch wird die sofortige Aktualisierung des Eingabefelds blockiert und die Benutzeroberfläche wirkt träge.

Der Concurrent Mode von React

React 18 führte nebenläufiges Rendering ein: React kann mit dem Rendern einer State-Aktualisierung beginnen, es pausieren und dringendere Aktualisierungen priorisieren, etwa die Eingabe. useTransition ist der Hook, mit dem Sie Aktualisierungen als Übergänge mit niedriger Priorität kennzeichnen können.

Grundlagen von useTransition

useTransition gibt `[isPending, startTransition]` zurück. Verpacken Sie die nicht dringende State-Aktualisierung in `startTransition()`. React priorisiert andere Aktualisierungen, etwa kontrollierte Eingabefelder, gegenüber dem Übergang.
const [isPending, startTransition] = useTransition();

const handleChange = (e) => {
  setInputValue(e.target.value); // urgent: update input immediately
  startTransition(() => {
    setFilteredList(filter(e.target.value)); // non-urgent
  });
};

isPending für die Ladeanzeige

Während der Übergang verarbeitet wird, ist `isPending` gleich `true`. Verwenden Sie den Wert, um einen Ladeindikator anzuzeigen oder die veraltete Ergebnisliste abzudunkeln. So erhalten Benutzer Feedback darüber, dass eine Aktualisierung läuft.
return (
  <>
    <input value={inputValue} onChange={handleChange} />
    {isPending && <Spinner />}
    <ResultList items={filteredList} />
  </>
);

Was gehört in startTransition?

Packen Sie nur State-Aktualisierungen in startTransition – keine asynchronen Vorgänge. Eingeschlossen wird die State-Aktualisierung, die das aufwendige Rendering auslöst.
// Correct
startTransition(() => setTab('heavy'));

// Wrong — async work outside React state
startTransition(async () => { await fetch(...); }); // not supported

startTransition ohne den Hook

Wenn Sie `isPending` nicht benötigen, können Sie startTransition direkt aus React importieren und aufrufen, ohne den Hook zu verwenden.
import { startTransition } from 'react';

startTransition(() => setQuery(newValue));

Beispiel für den Tab-Wechsel

Ein typischer Anwendungsfall: Durch einen Klick auf einen Tab wird eine umfangreiche Komponente gewechselt. Verpacken Sie den Tab-Wechsel in startTransition, damit die Markierung des aktiven Tabs sofort aktualisiert wird, während die umfangreiche Komponente im Hintergrund gerendert wird.
const [tab, setTab] = useState('posts');
const [isPending, startTransition] = useTransition();

const selectTab = (t) =>
  startTransition(() => setTab(t));

useTransition im Vergleich zu useDeferredValue

Verwenden Sie useTransition, wenn Sie die State-Aktualisierung selbst steuern, also setState aufrufen. Verwenden Sie useDeferredValue, wenn Sie ein Prop oder einen Wert erhalten, dessen Aktualisierung Sie nicht direkt verzögern können – dabei wird der Wert selbst verzögert.

Kein Ersatz für Optimierung

startTransition macht das Rendering nicht schneller, sondern verschiebt es lediglich. Wenn das Rendern einer Komponente 500 ms dauert, dauert es weiterhin 500 ms. Kombinieren Sie die Lösung bei tatsächlich langsamen Listen mit React.memo oder Virtualisierung.

Kurze Überprüfung

Wofür steht isPending aus useTransition?

Zusammenfassung

Mit useTransition können Sie State-Aktualisierungen als nicht dringende Übergänge kennzeichnen. Dringende Aktualisierungen wie Eingaben werden sofort gerendert, Übergänge erst, wenn React über Kapazitäten verfügt. Verwenden Sie isPending, um Ladefeedback anzuzeigen.

Als Nächstes

Nächste Lektion: **useDeferredValue for Input Debouncing** – Sie verzögern das erneute Rendern langsamer Teile der Benutzeroberfläche, während Eingaben direkt reagieren.

Häufig gestellte Fragen

Ist die Lektion „useTransition für blockierungsfreie UI-Updates“ kostenlos?

Ja — der vollständige Text von „useTransition für blockierungsfreie UI-Updates“ 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 „useTransition für blockierungsfreie UI-Updates“?

Umschließen Sie aufwendige State-Updates mit startTransition, damit die UI reaktionsfähig bleibt. 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 2 von 4.

Wie lange dauert die Lektion „useTransition für blockierungsfreie UI-Updates“?

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. Race Conditions und Effect-Cleanup
  2. useTransition für blockierungsfreie UI-Updates
  3. useDeferredValue zur Eingabe-Entprellung
  4. Suspense für Daten- und Code-Grenzen
← Zurück zu React Academy