0Pricing
React Academy · Lektion

useDeferredValue zur Eingabe-Entprellung

Verzögern Sie erneute Renderings langsamer UI-Bereiche, während Eingaben direkt reagieren.

useDeferredValue zur Eingabe-Entprellung 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.

Willkommen

In dieser Lektion verwenden Sie useDeferredValue, um das erneute Rendern aufwendiger Teile der Benutzeroberfläche zu verzögern, während kontrollierte Eingabefelder schnell und reaktionsfähig bleiben.

Was ist useDeferredValue?

useDeferredValue nimmt einen Wert entgegen und gibt eine verzögerte Version davon zurück. Der verzögerte Wert bleibt während dringender Render-Vorgänge hinter dem aktuellen Wert zurück. Dadurch kann React die Benutzeroberfläche in zwei Schritten aktualisieren: schnell für die Eingabe und verzögert für die aufwendige Ausgabe.
const [query, setQuery] = useState('');
const deferredQuery = useDeferredValue(query);
// query updates immediately on keystroke
// deferredQuery updates when React has capacity

Aufwendige Komponenten anwenden

Übergeben Sie der aufwendigen Komponente den verzögerten Wert, nicht den aktuellen Wert. Die aufwendige Komponente wird nur neu gerendert, wenn sich deferredQuery ändert – bei schnellem Tippen hinkt dieser Wert der Eingabe hinterher.
function App() {
  const [q, setQ] = useState('');
  const dq = useDeferredValue(q);
  return (
    <>
      <input value={q} onChange={e => setQ(e.target.value)} />
      <HeavyList query={dq} /> {/* renders with deferred value */}
    </>
  );
}

Anzeige für veraltete Inhalte

Vergleichen Sie den aktuellen Wert mit dem verzögerten Wert. Wenn sie sich unterscheiden, sind die Inhalte veraltet. Sie können sie dann beispielsweise mit opacity abdunkeln oder einen Ladeindikator anzeigen.
const isStale = q !== dq;
<div style={{ opacity: isStale ? 0.5 : 1 }}>
  <HeavyList query={dq} />
</div>

useDeferredValue im Vergleich zu debounce

Ein auf setTimeout basierendes Debouncing führt immer eine feste Verzögerung ein, zum Beispiel 300 ms, auch auf schnellen Geräten. useDeferredValue passt sich dagegen an: Auf schnellen Geräten wird sofort gerendert, auf langsamen Geräten wird die Aktualisierung verzögert, um Ruckeln zu vermeiden.

useDeferredValue im Vergleich zu useTransition

Verwenden Sie useTransition, wenn Sie den State-Setter selbst steuern und setState einschließen können. Verwenden Sie useDeferredValue, wenn Sie einen Wert als Prop oder aus einem Context erhalten und nicht kontrollieren können, wann er aktualisiert wird.
// You own the state: use useTransition
startTransition(() => setTab(newTab));

// You receive the value: use useDeferredValue
const deferredProp = useDeferredValue(props.searchQuery);

Mit React.memo kombinieren

Damit useDeferredValue erneute Render-Vorgänge effektiv überspringen kann, muss die aufwendige Komponente in React.memo eingeschlossen sein. Ohne diese Optimierung wird die Komponente bei jedem erneuten Rendern des Parents gerendert, unabhängig vom verzögerten Wert.
const HeavyList = React.memo(function({ query }) {
  // expensive rendering
  return <ul>{data.filter(q => ...).map(...)}</ul>;
});

Der verzögerte Wert beim initialen Rendern

Beim initialen Rendern entspricht der verzögerte Wert dem aktuellen Wert – es gibt keine Verzögerung. Die Verzögerung greift erst, wenn sich der aktuelle und der verzögerte Wert während eines erneuten Renderns unterscheiden.

Mehrere verzögerte Werte

Sie können useDeferredValue mehrfach für verschiedene aufwendige Teile der Benutzeroberfläche aufrufen. Jeder Wert wird unabhängig verzögert.
const deferredA = useDeferredValue(valueA);
const deferredB = useDeferredValue(valueB);

Einschränkungen

useDeferredValue macht das Rendering nicht schneller, sondern verzögert es lediglich. Wenn das aufwendige Rendern 500 ms dauert, wird die Benutzeroberfläche weiterhin ruckeln. Kombinieren Sie die Lösung bei wirklich großen Listen mit Virtualisierung, etwa durch react-virtual.

Kurze Überprüfung

Wann bietet useDeferredValue einen Vorteil gegenüber einem normalen Wert?

Zusammenfassung

useDeferredValue gibt eine verzögerte Version eines Werts zurück. Übergeben Sie diese an aufwendige Komponenten, die in React.memo eingeschlossen sind. Zeigen Sie veraltete Inhalte an, wenn deferredValue !== value gilt. Bevorzugen Sie diese Lösung gegenüber einem Debouncing mit fester Verzögerung, wenn Sie eine adaptive Performance benötigen.

Als Nächstes

Nächste Lektion: **Suspense for Data & Code Boundaries** – Sie kombinieren Suspense mit Lazy Loading und Datenbibliotheken, um klare Ladezustände zu schaffen.

Häufig gestellte Fragen

Ist die Lektion „useDeferredValue zur Eingabe-Entprellung“ kostenlos?

Ja — der vollständige Text von „useDeferredValue zur Eingabe-Entprellung“ 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 „useDeferredValue zur Eingabe-Entprellung“?

Verzögern Sie erneute Renderings langsamer UI-Bereiche, während Eingaben direkt reagieren. 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 „useDeferredValue zur Eingabe-Entprellung“?

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