0Pricing
React Academy · Lección

Combinación de virtualización y obtención de datos

Implemente scroll infinito activando la obtención de datos cuando la lista virtualizada llegue al final.

Combinación de virtualización y obtención de datos es una lección gratuita de React Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de React Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de React Academy incluye 4 lecciones en total.

El patrón de scroll infinito

El scroll infinito carga más datos cuando el usuario se acerca al final de la lista, en lugar de utilizar una paginación con botones de página explícitos. Combinado con la virtualización, permite explorar grandes conjuntos de datos con fluidez.

La lista muestra únicamente las filas visibles mientras los nuevos datos se obtienen en segundo plano, justo antes de que el usuario llegue al final.

El callback onItemsRendered

Los componentes de lista de react-window aceptan un callback onItemsRendered que informa de qué índices de elementos se están renderizando. Proporciona los índices de inicio y final visibles y los de overscan.

Este callback es su punto de conexión con el desplazamiento y le permite detectar hasta dónde ha desplazado el usuario la lista sin conectar eventos de desplazamiento sin procesar.

Detección de overscanStopIndex cerca de itemCount

Para saber cuándo obtener datos, compare overscanStopIndex de onItemsRendered con el itemCount actual. Cuando la ventana renderizada se acerca al final de los datos cargados, se necesitan más datos.

Usar el índice de final de overscan proporciona un pequeño margen de anticipación y activa la obtención ligeramente antes de que el usuario llegue a la última fila.

Activar la obtención cerca del final

Cuando el índice de final supera un umbral, por ejemplo, cuando queda una pantalla de distancia respecto a itemCount, llame a la función de obtención de la página siguiente. Protéjala para no lanzar varias solicitudes simultáneas.

Un indicador de carga o comprobar si ya hay una obtención en curso evita solicitudes duplicadas mientras el usuario se desplaza por la zona de activación.

Un indicador de carga como último elemento

Un recurso sencillo consiste en renderizar itemCount como el número de elementos cargados más uno mientras haya más datos disponibles. La fila adicional muestra un indicador de carga para señalar que la obtención está en curso.

Cuando llegan datos nuevos, el recuento aumenta y la fila del indicador se sustituye por contenido real, lo que proporciona una respuesta visual fluida.

react-window-infinite-loader

El paquete complementario react-window-infinite-loader se encarga de esta lógica. Proporcione isItemLoaded, loadMoreItems e itemCount, y llamará a su cargador mientras el usuario se desplaza hacia filas que aún no se han cargado.

Gestiona el registro de qué rangos están cargados y evita llamadas de carga redundantes, lo que simplifica la implementación de un scroll infinito sólido.

Filas de marcador de posición durante la obtención

Para los índices que aún no se han cargado, puede renderizar filas de marcador de posición o skeletons en lugar de dejarlos en blanco. La función de renderizado comprueba si el elemento de un índice está cargado y muestra un skeleton si no lo está.

Los skeletons conservan el diseño y comunican el progreso, lo que resulta mejor que mostrar un espacio vacío mientras llega la página siguiente.

Filas de error y reintento

Las obtenciones pueden fallar, así que debe gestionar los errores correctamente. Puede renderizar al final una fila de error especial con un botón de reintento que vuelva a invocar la función de carga para el rango que falló.

Esto mantiene la lista utilizable después de un contratiempo y ofrece al usuario una forma clara de recuperarse sin volver a cargar toda la página.

Paginación por cursor frente a paginación por offset

Dos estilos habituales de paginación alimentan las listas infinitas. La paginación por offset solicita datos mediante un número de página o una cantidad de elementos omitidos, mientras que la paginación por cursor solicita los elementos posteriores a un cursor opaco que apunta al último elemento visto.

La paginación por cursor suele ser más fiable para datos activos y cambiantes porque evita los desplazamientos y duplicados que los offsets pueden provocar cuando se insertan elementos.

Combinación con React Query useInfiniteQuery

React Query useInfiniteQuery se combina de forma natural con la virtualización. Gestiona las páginas obtenidas, el cursor siguiente y los estados de carga y error, mientras react-window renderiza las páginas aplanadas de forma eficiente.

Aplane las páginas en una sola matriz para la lista y llame a fetchNextPage desde el umbral de onItemsRendered; así obtiene almacenamiento en caché y reintentos sin coste adicional.

Comprobación rápida: condición de activación del scroll infinito

Identifique cuándo obtener más datos en una lista infinita virtualizada.

Resumen: virtualización con obtención de datos

El scroll infinito carga páginas cuando el usuario se acerca al final. onItemsRendered informa de los índices y comparar overscanStopIndex con itemCount indica cuándo obtener más datos, evitando las solicitudes duplicadas.

Utilice filas de marcador de posición y de error, react-window-infinite-loader para gestionar el registro y la paginación por cursor para los datos activos. React Query useInfiniteQuery gestiona las páginas, los cursores y los estados junto con el renderizado de react-window.

Preguntas frecuentes

¿La lección «Combinación de virtualización y obtención de datos» es gratis?

Sí — el texto completo de «Combinación de virtualización y obtención de datos» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de React Academy, actualiza a CoddyKit PRO. El curso de React Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Combinación de virtualización y obtención de datos»?

Implemente scroll infinito activando la obtención de datos cuando la lista virtualizada llegue al final. Practicas React Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar React Academy?

No se requiere experiencia previa. React Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Combinación de virtualización y obtención de datos»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de React Academy?

Sí. Cada lección de React Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. El problema de renderizar listas grandes
  2. FixedSizeList: renderización de miles de elementos
  3. VariableSizeList: alturas de fila dinámicas
  4. Combinación de virtualización y obtención de datos
← Volver a React Academy