0Pricing
React Academy · Leçon

Combiner virtualisation et récupération de données

Implémentez un défilement infini en déclenchant la récupération de données lorsque la liste virtualisée atteint sa fin.

Combiner virtualisation et récupération de données 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.

Le modèle du défilement infini

Le défilement infini charge davantage de données lorsque l’utilisateur approche de la fin de la liste, au lieu d’utiliser une pagination avec des boutons de page explicites. Associé à la virtualisation, il permet de parcourir fluidement d’immenses ensembles de données.

La liste affiche uniquement les lignes visibles, tandis que les nouvelles données sont récupérées en arrière-plan juste avant que l’utilisateur n’atteigne le bas.

Le rappel onItemsRendered

Les composants de liste de react-window acceptent un rappel onItemsRendered qui indique quels indices d’éléments sont actuellement rendus. Il fournit les indices de début et de fin de la zone visible ainsi que ceux du sur-rendu.

Ce rappel vous permet de vous connecter au défilement et de déterminer jusqu’où l’utilisateur a parcouru la liste sans configurer vous-même des événements bruts de défilement.

Détecter overscanStopIndex près de itemCount

Pour savoir quand charger des données, comparez overscanStopIndex, fourni par onItemsRendered, à la valeur actuelle de itemCount. Lorsque la fenêtre rendue approche de la fin des données chargées, il faut en charger davantage.

Utiliser l’indice de fin du sur-rendu vous donne un peu d’avance et déclenche le chargement légèrement avant que l’utilisateur n’atteigne réellement la toute dernière ligne.

Déclencher le chargement près de la fin

Lorsque l’indice de fin franchit un seuil, par exemple lorsqu’il se trouve à moins d’un écran de itemCount, appelez votre fonction de chargement pour la page suivante. Protégez cet appel afin de ne pas lancer plusieurs requêtes simultanées.

Un indicateur de chargement ou la vérification qu’un chargement est déjà en cours empêche les requêtes en double lorsque l’utilisateur fait défiler la zone de déclenchement.

Un indicateur de chargement comme dernier élément

Une astuce élégante consiste à définir itemCount comme le nombre d’éléments chargés plus un tant qu’il reste des données à charger. La ligne supplémentaire affiche un indicateur de chargement, signalant qu’une récupération est en cours.

Lorsque les nouvelles données arrivent, le nombre d’éléments augmente et la ligne de chargement est remplacée par du contenu réel, ce qui fournit un retour visuel fluide.

react-window-infinite-loader

Le module complémentaire react-window-infinite-loader prend cette logique en charge pour vous. Vous lui fournissez isItemLoaded, loadMoreItems et itemCount, puis il appelle votre chargeur lorsque l’utilisateur fait défiler la liste vers des lignes non chargées.

Il gère le suivi des plages chargées et empêche les appels de chargement redondants, ce qui simplifie la mise en place d’un défilement infini fiable.

Lignes d’attente pendant le chargement

Pour les indices non chargés, vous pouvez afficher des lignes d’attente ou des lignes squelettes plutôt que des espaces vides. La fonction de rendu vérifie si l’élément correspondant à un indice est chargé et affiche un squelette dans le cas contraire.

Les squelettes préservent la mise en page et indiquent la progression, ce qui est plus agréable qu’un espace vide pendant l’arrivée de la page suivante.

Lignes d’erreur et nouvelle tentative

Les chargements peuvent échouer : gérez donc les erreurs avec élégance. Vous pouvez afficher à la fin une ligne d’erreur spéciale contenant un bouton de nouvelle tentative qui rappelle la fonction de chargement pour la plage ayant échoué.

La liste reste ainsi utilisable après un incident et l’utilisateur dispose d’un moyen clair de reprendre la navigation sans recharger toute la page.

Pagination par curseur ou décalage

Deux styles de pagination courants alimentent les listes infinies. La pagination par décalage effectue les requêtes par numéro de page ou par nombre d’éléments à ignorer, tandis que la pagination par curseur demande les éléments qui suivent un curseur opaque pointant vers le dernier élément consulté.

La pagination par curseur est généralement plus fiable pour les données dynamiques, car elle évite les décalages et les doublons que les décalages peuvent provoquer lorsque des éléments sont insérés.

Associer React Query à useInfiniteQuery

React Query useInfiniteQuery s’associe naturellement à la virtualisation. Il gère les pages récupérées, le curseur suivant ainsi que les états de chargement et d’erreur, tandis que react-window affiche efficacement les pages aplaties.

Aplatissez les pages en un seul tableau pour la liste et appelez fetchNextPage depuis le seuil défini avec onItemsRendered : vous bénéficiez ainsi gratuitement de la mise en cache et des nouvelles tentatives.

Vérification rapide : condition de déclenchement du défilement infini

Déterminez quand charger davantage de données dans une liste infinie virtualisée.

Récapitulatif : virtualisation et chargement des données

Le défilement infini charge les pages lorsque l’utilisateur approche de la fin. onItemsRendered indique les indices, et comparer overscanStopIndex à itemCount vous permet de savoir quand charger des données, tout en empêchant les requêtes en double.

Utilisez des lignes d’attente et des lignes d’erreur, react-window-infinite-loader pour le suivi, et la pagination par curseur pour les données dynamiques. React Query useInfiniteQuery gère les pages, les curseurs et les états en parallèle de l’affichage avec react-window.

Questions Fréquemment Posées

La leçon « Combiner virtualisation et récupération de données » est-elle gratuite ?

Oui — le texte complet de « Combiner virtualisation et récupération de données » 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 « Combiner virtualisation et récupération de données » ?

Implémentez un défilement infini en déclenchant la récupération de données lorsque la liste virtualisée atteint sa fin. 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 « Combiner virtualisation et récupération de données » ?

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