Sélection de lignes et tableaux virtualisés
Ajoutez la sélection des lignes par cases à cocher et associez TanStack Table à TanStack Virtual pour afficher de grands ensembles de données
Sélection de lignes et tableaux virtualisés est une leçon React Academy gratuite sur CoddyKit. Ceci est la leçon 4 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.
Activation de la sélection des lignes
Ajoutez une colonne de sélection à votre tableau ColumnDef en utilisant l’identifiant 'select'. La cellule affiche une case à cocher reliée à row.getToggleSelectedHandler(). L’en-tête affiche une case à cocher permettant de tout sélectionner, avec table.getToggleAllRowsSelectedHandler().
Transmettez également l’état rowSelection et onRowSelectionChange à useReactTable.
Vérification de l’état de sélection
row.getIsSelected() renvoie true lorsqu’une ligne est actuellement sélectionnée, ce qui est idéal pour appliquer un style d’arrière-plan mis en évidence aux lignes sélectionnées.
row.getIsSomeSelected() gère l’état indéterminé d’une case à cocher lorsque seules certaines lignes d’un groupe sont sélectionnées, ce qui est utile pour les tables groupées.
Récupération des lignes sélectionnées
table.getSelectedRowModel().rows renvoie un tableau de tous les objets ligne actuellement sélectionnés. Chaque ligne possède une propriété row.original contenant l’objet de données d’origine.
C’est ainsi que vous créez des boutons d’actions groupées qui agissent sur l’ensemble sélectionné, comme "Supprimer la sélection" ou "Exporter la sélection".
Modèle d’interface pour les actions groupées
Affichez conditionnellement les boutons d’action en fonction de table.getSelectedRowModel().rows.length > 0. Lorsqu’aucune ligne n’est sélectionnée, masquez ou désactivez la barre d’outils des actions groupées afin d’éviter de dérouter l’utilisateur avec des interactions vides.
Affichez le nombre d’éléments sélectionnés dans l’interface : "{count} lignes sélectionnées" permet aux utilisateurs de savoir ce qui est sélectionné.
Pourquoi virtualiser les tables ?
Rendre 10 000 lignes sous forme de nœuds DOM est extrêmement lent. Le navigateur doit mettre en page, peindre et maintenir des milliers d’éléments. Les utilisateurs constatent un défilement saccadé et des rendus initiaux lents.
La virtualisation ne rend que les lignes actuellement visibles dans la fenêtre d’affichage, ce qui réduit considérablement la taille du DOM et améliore les performances.
Installation de TanStack Virtual
Installez @tanstack/react-virtual en complément de @tanstack/react-table. Les deux bibliothèques sont distinctes, mais conçues pour se compléter. TanStack Table gère la logique de vos données ; TanStack Virtual gère les éléments rendus dans le DOM.
Le point d’intégration est le tableau de lignes provenant de table.getRowModel().rows.
Configuration de useVirtualizer
Appelez useVirtualizer({ count: table.getRowModel().rows.length, getScrollElement: () => tableContainerRef.current, estimateSize: () => 35 }). count détermine le nombre d’éléments virtualisés existants, qui correspond au nombre actuel de lignes de la table après l’application de tous les filtres.
estimateSize fournit une estimation initiale de la hauteur des lignes ; leurs hauteurs réelles sont mesurées au fur et à mesure de leur rendu.
Rendu des éléments virtualisés
Appelez virtualizer.getVirtualItems() pour obtenir uniquement les lignes qui doivent actuellement se trouver dans le DOM. Parcourez ce tableau, accédez à la ligne réelle via table.getRowModel().rows[virtualRow.index] et ne rendez que ces éléments tr.
Chaque élément virtualisé possède une propriété start pour son positionnement absolu dans le conteneur de défilement.
Ajout de divs d’espacement
Pour conserver une position de défilement correcte, ajoutez un div d’espacement supérieur dont la hauteur est égale à start du premier élément virtualisé, ainsi qu’un div d’espacement inférieur dont la hauteur est égale à la taille totale moins la fin du dernier élément.
Ces divs invisibles remplissent l’espace qu’occuperaient les lignes non rendues et maintiennent une proportion correcte de la barre de défilement.
Hauteur dynamique des lignes avec measureElement
Transmettez measureElement: el => el.getBoundingClientRect().height à useVirtualizer pour obtenir des hauteurs de lignes dynamiques précises. La référence de chaque ligne est attachée à l’élément tr afin que le virtualiseur mesure sa hauteur réelle après rendu.
Cela prend en charge les lignes dont le contenu varie (texte sur plusieurs lignes, lignes développées) sans provoquer de décalages de mise en page.
Combinaison de toutes les fonctionnalités
TanStack Table avec tri, filtrage, pagination, sélection des lignes et TanStack Virtual se combine entièrement. Le nombre de lignes transmis à useVirtualizer doit provenir de table.getRowModel().rows après le traitement des données par tous les modèles de lignes actifs.
Lorsque la pagination est activée, paginez d’abord, puis virtualisez les lignes de la page actuelle pour obtenir un défilement fluide au sein d’une page volumineuse.
Sélection des lignes dans TanStack Table
Quelle méthode renvoie les objets de données d’origine de toutes les lignes actuellement sélectionnées ?
Récapitulatif de la leçon
La sélection des lignes utilise une colonne de cases à cocher avec getToggleSelectedHandler, l’état rowSelection et table.getSelectedRowModel().rows pour accéder aux données sélectionnées. La virtualisation avec useVirtualizer ne rend que les lignes visibles à l’aide de getVirtualItems, de divs d’espacement et, éventuellement, de measureElement pour les hauteurs dynamiques.
Toutes les fonctionnalités de TanStack Table (tri, filtrage, pagination, sélection) se combinent proprement avec le rendu virtualisé.
Questions Fréquemment Posées
La leçon « Sélection de lignes et tableaux virtualisés » est-elle gratuite ?
Oui — le texte complet de « Sélection de lignes et tableaux virtualisés » 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 « Sélection de lignes et tableaux virtualisés » ?
Ajoutez la sélection des lignes par cases à cocher et associez TanStack Table à TanStack Virtual pour afficher de grands ensembles de données 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 4 sur 4.
Combien de temps prend la leçon « Sélection de lignes et tableaux virtualisés » ?
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
- Philosophie de TanStack Table et conception sans interface
- Définir les colonnes et afficher les lignes
- Tri, filtrage et pagination
- Sélection de lignes et tableaux virtualisés