React Academy · Lektion

Das Problem beim Rendern großer Listen

Verstehen Sie, warum das Rendern von 10.000 DOM-Knoten die Leistung stark beeinträchtigt und wie Virtualisierung dieses Problem löst.

Lektion 1 von 412 Schritte

Das Problem beim Rendern großer Listen ist eine kostenlose React Academy-Lektion auf CoddyKit. Dies ist Lektion 1 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.

10000 li-Elemente rendern

Angenommen, Sie iterieren über ein Array mit zehntausend Elementen und rendern für jedes ein li. React erstellt gewissenhaft zehntausend DOM-Knoten, obwohl gleichzeitig nur etwa zwei Dutzend auf den Bildschirm passen.

Die meisten dieser Knoten liegen außerhalb des sichtbaren Bereichs und sind unsichtbar. Trotzdem muss der Browser jeden einzelnen erstellen, layouten und verwalten.

Browser-Layoutkosten bei großen DOM-Bäumen

Große DOM-Bäume verursachen für den Browser erhebliche Kosten. Layout, Neuberechnung von Styles und Speicherbedarf steigen mit der Anzahl der Knoten. Eine riesige Liste verlangsamt daher das initiale Rendern und erhöht den Speicherverbrauch.

Selbst einfache Interaktionen können ruckeln, wenn die Engine Zehntausende von Knoten verfolgen und neu layouten muss.

Verschlechterung der Scroll-Performance

Beim Scrollen einer riesigen Liste spüren Benutzer die Auswirkungen am deutlichsten. Der Browser zeichnet Inhalte möglicherweise neu und berechnet das Layout neu, während sich der Inhalt bewegt. Bei zu vielen Knoten sinkt die Bildrate unter ein flüssiges Niveau.

Das Ergebnis ist ruckeliges und verzögertes Scrollen, wodurch sich die Oberfläche unabhängig von der Geschwindigkeit der übrigen App unresponsiv anfühlt.

Die Anzahl der Knoten in DevTools messen

Sie können das Problem im Memory-Panel der Browser-DevTools bestätigen, das die Anzahl der DOM-Knoten auf der Seite anzeigt. Eine Liste, die Tausende von Knoten erstellt, ist hier deutlich zu erkennen.

Wenn Sie beobachten, wie diese Anzahl beim Rendern weiterer Elemente anwächst, erhalten Sie einen konkreten Beleg dafür, dass die DOM-Größe den Engpass bildet.

Das Konzept der Virtualisierung

Virtualisierung, manchmal auch Windowing genannt, rendert statt der gesamten Liste nur die aktuell sichtbaren Elemente sowie einen kleinen Puffer. Beim Scrollen werden Elemente, die in den sichtbaren Bereich gelangen, gemountet, und Elemente, die ihn verlassen, werden unmountet.

Dadurch bleibt das aktive DOM unabhängig von der Anzahl der Datenelemente klein, sodass DOM-Größe und Dataset-Größe voneinander entkoppelt werden.

Das sichtbare Fenster berechnen

Das sichtbare Fenster ergibt sich aus der Scrollposition, der Höhe des Containers und der Elementhöhe. Wenn Sie die Höhe des Viewports durch die Elementhöhe teilen, erhalten Sie ungefähr die Anzahl der sichtbaren Zeilen. Der Scrolloffset zeigt, um welche Zeilen es sich handelt.

Die Bibliothek verwendet diese Werte, um jederzeit genau den Slice der Elemente zu bestimmen, der gerendert werden soll.

react-virtualized vs react-window vs TanStack Virtual

Mehrere Bibliotheken implementieren Windowing. react-virtualized bietet viele Funktionen, ist aber größer. react-window ist eine kleinere, fokussierte Neuentwicklung desselben Autors, und TanStack Virtual ist eine moderne Headless-Option.

Für die meisten Listen bietet react-window ein hervorragendes Gleichgewicht aus Einfachheit und Performance, weshalb sich dieser Kurs darauf konzentriert.

Wann Virtualisierung notwendig ist

Virtualisierung lohnt sich bei langen Listen, grob ab mehreren hundert Zeilen, oder wenn die Zeilen viele Bilder und verschachtelte Komponenten enthalten. In diesen Fällen wirkt sich die DOM-Größe tatsächlich negativ aus.

Endlos-Feeds, große Datentabellen und Chatverläufe sind typische Szenarien, in denen Windowing unverzichtbar und nicht nur optional ist.

Wann sich der Aufwand nicht lohnt

Bei kurzen Listen mit einigen Dutzend einfachen Elementen erhöht Virtualisierung die Komplexität ohne nennenswerten Nutzen. Der Aufwand für absolute Positionierung und Messung kann sich sogar negativ auf die Gesamtperformance auswirken.

Verwenden Sie Windowing nur für tatsächlich große Datasets. Bei kleinen Datasets ist ein einfaches map übersichtlicher und vollkommen schnell genug.

Der Nutzen

Mit Windowing behält eine Liste mit hunderttausend Elementen nur die wenigen sichtbaren Elemente im DOM. Dadurch ist das initiale Rendern schnell, der Speicherverbrauch bleibt niedrig und das Scrollen läuft flüssig.

Sie nehmen beim Einrichten etwas zusätzliche Komplexität in Kauf und erhalten dafür eine Performance, die nicht mehr von der Datenmenge abhängt. Genau das ist das zentrale Versprechen der Virtualisierung.

Schnelltest: Wann virtualisieren?

Entscheiden Sie, wann sich Virtualisierung lohnt.

Zusammenfassung: Das Problem großer Listen

Das Rendern Tausender von DOM-Knoten erhöht die Layoutkosten und den Speicherverbrauch und führt zu ruckeligem Scrollen. Dies können Sie anhand der Knotenanzahl in den DevTools bestätigen. Virtualisierung rendert nur das sichtbare Fenster sowie einen Puffer und hält dadurch das DOM klein.

react-window ist unter react-virtualized und TanStack Virtual eine fokussierte und leichtgewichtige Wahl. Verwenden Sie es für große oder aufwendige Listen und verzichten Sie bei kurzen, einfachen Listen darauf.

Kostenlos starten

Lerne React mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
88
Lektionen
324

Häufig gestellte Fragen

Ist die Lektion „Das Problem beim Rendern großer Listen“ kostenlos?

Ja — der vollständige Text von „Das Problem beim Rendern großer Listen“ 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 „Das Problem beim Rendern großer Listen“?

Verstehen Sie, warum das Rendern von 10.000 DOM-Knoten die Leistung stark beeinträchtigt und wie Virtualisierung dieses Problem löst. 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 1 von 4.

Wie lange dauert die Lektion „Das Problem beim Rendern großer Listen“?

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. Das Problem beim Rendern großer Listen
  2. FixedSizeList: Tausende Elemente rendern
  3. VariableSizeList: dynamische Zeilenhöhen
  4. Virtualisierung mit Datenabruf kombinieren
← Zurück zu React Academy