0Pricing
React Academy · Leçon

Le problème du rendu des grandes listes

Comprenez pourquoi le rendu de 10 000 nœuds DOM dégrade fortement les performances et comment la virtualisation résout ce problème.

Le problème du rendu des grandes listes est une leçon React Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage React Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours React Academy comprend 4 leçons au total.

Rendre 10 000 éléments li

Supposons que vous parcouriez un tableau de dix mille éléments et que vous rendiez un élément li pour chacun d’eux. React créera consciencieusement dix mille nœuds DOM, alors que seuls quelques dizaines tiennent à l’écran simultanément.

La plupart de ces nœuds sont hors écran et invisibles, mais le navigateur doit tout de même les créer, effectuer leur mise en page et les maintenir tous.

Coût de mise en page du navigateur pour les grands arbres DOM

Les grands arbres DOM ont un coût réel pour le navigateur. La mise en page, le recalcul des styles et la mémoire augmentent tous avec le nombre de nœuds : une liste immense ralentit le rendu initial et accroît l’utilisation de la mémoire.

Même des interactions simples peuvent saccader lorsque le moteur doit suivre et recalculer la mise en page de dizaines de milliers de nœuds.

Dégradation des performances lors du défilement

C’est lors du défilement d’une liste immense que les utilisateurs ressentent le plus le problème. Le navigateur redessine la page et peut recalculer la mise en page lorsque le contenu se déplace ; avec trop de nœuds, la fréquence d’images devient insuffisante pour assurer une animation fluide.

Le résultat est un défilement saccadé et lent, qui donne l’impression que l’interface ne répond pas, quelle que soit la rapidité du reste de l’application.

Mesurer le nombre de nœuds dans les outils de développement

Vous pouvez confirmer le problème dans le panneau Mémoire des outils de développement du navigateur, qui indique le nombre de nœuds DOM présents sur la page. Une liste qui crée des milliers de nœuds se repère clairement ici.

Observer ce nombre augmenter rapidement à mesure que vous rendez davantage d’éléments vous apporte une preuve concrète que la taille du DOM est le goulot d’étranglement.

Le concept de virtualisation

La virtualisation, parfois appelée fenêtrage, ne rend que les éléments actuellement visibles et un petit tampon, plutôt que la liste entière. Lorsque vous faites défiler la page, les éléments qui entrent dans la fenêtre sont montés et ceux qui en sortent sont démontés.

Le DOM actif reste ainsi réduit, quel que soit le nombre d’éléments contenus dans les données, ce qui dissocie la taille du DOM de celle du jeu de données.

Calculer la fenêtre visible

La fenêtre visible est déduite de la position de défilement, de la hauteur du conteneur et de la hauteur des éléments. Diviser la hauteur de la fenêtre d’affichage par celle d’un élément donne approximativement le nombre de lignes visibles, et le décalage de défilement indique lesquelles.

La bibliothèque utilise ces nombres pour déterminer exactement quelle portion d’éléments rendre à chaque instant.

react-virtualized ou react-window ou TanStack Virtual

Plusieurs bibliothèques implémentent le fenêtrage. react-virtualized est riche en fonctionnalités, mais plus volumineuse ; react-window est une réécriture plus petite et spécialisée du même auteur ; TanStack Virtual est une option moderne sans interface.

Pour la plupart des listes, react-window offre un excellent équilibre entre simplicité et performances, ce qui explique pourquoi ce cours se concentre sur cette bibliothèque.

Quand la virtualisation est nécessaire

La virtualisation devient avantageuse pour les longues listes, généralement à partir de plusieurs centaines de lignes, ou lorsque les lignes contiennent de nombreuses images et des composants imbriqués. C’est dans ces cas que la taille du DOM nuit réellement aux performances.

Les flux infinis, les grandes tables de données et les historiques de discussion sont des scénarios typiques où le fenêtrage devient essentiel plutôt que facultatif.

Quand elle n’en vaut pas la peine

Pour les listes courtes de quelques dizaines d’éléments simples, la virtualisation ajoute de la complexité sans apporter de bénéfice notable. Le positionnement absolu et le coût des mesures peuvent même avoir un effet globalement négatif.

Réservez le fenêtrage aux jeux de données réellement volumineux ; pour les petits jeux de données, un simple parcours du tableau est plus simple et parfaitement rapide.

Le bénéfice

Avec le fenêtrage, une liste de cent mille éléments ne conserve dans le DOM que les quelques éléments visibles ; le rendu initial est donc rapide, la mémoire reste peu sollicitée et le défilement est fluide.

Vous échangez un peu de complexité lors de la configuration contre des performances qui ne dépendent plus de la quantité de données, ce qui constitue la promesse centrale de la virtualisation.

Vérification rapide : quand utiliser la virtualisation

Déterminez quand la virtualisation est avantageuse.

Récapitulatif : le problème des grandes listes

Rendre des milliers de nœuds DOM augmente le coût de mise en page, l’utilisation de la mémoire et les saccades lors du défilement ; vous pouvez le confirmer en observant le nombre de nœuds dans les outils de développement. La virtualisation ne rend que la fenêtre visible et un tampon, ce qui maintient le DOM à une taille réduite.

react-window est une solution spécialisée et légère parmi react-virtualized et TanStack Virtual. Utilisez-la pour les listes volumineuses ou lourdes, et évitez-la pour les listes courtes et simples.

Questions Fréquemment Posées

La leçon « Le problème du rendu des grandes listes » est-elle gratuite ?

Oui — le texte complet de « Le problème du rendu des grandes listes » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours React Academy, passe à CoddyKit PRO. Le cours React Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Le problème du rendu des grandes listes » ?

Comprenez pourquoi le rendu de 10 000 nœuds DOM dégrade fortement les performances et comment la virtualisation résout ce problème. Tu pratiques React Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer React Academy ?

Aucune expérience préalable n'est requise. React Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Le problème du rendu des grandes listes » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon React Academy ?

Oui. Chaque leçon React Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Le problème du rendu des grandes listes
  2. FixedSizeList : afficher des milliers d’éléments
  3. VariableSizeList : hauteurs de lignes dynamiques
  4. Combiner virtualisation et récupération de données
← Retour à React Academy