Nuestra aplicación utiliza el desplazamiento infinito para navegar por grandes listas de elementos heterogéneos. Hay algunas arrugas:
- Es común que nuestros usuarios tengan una lista de 10,000 elementos y necesiten desplazarse por más de 3000.
- Estos son elementos ricos, por lo que solo podemos tener unos pocos cientos en el DOM antes de que el rendimiento del navegador sea inaceptable.
- Los artículos son de diferentes alturas.
- Los artículos pueden contener imágenes y permitimos al usuario saltar a una fecha específica. Esto es complicado porque el usuario puede saltar a un punto en la lista donde necesitamos cargar imágenes sobre la ventana gráfica, lo que empujaría el contenido hacia abajo cuando se carguen. No manejar eso significa que el usuario puede saltar a una fecha, pero luego cambiar a una fecha anterior.
Soluciones conocidas e incompletas:
( react-infinite-scroll ) - Este es solo un simple componente de "carga más cuando tocamos el fondo". No elimina ninguno de los DOM, por lo que morirá en miles de elementos.
( Posición de desplazamiento con React ): muestra cómo almacenar y restaurar la posición de desplazamiento al insertar en la parte superior o al insertar en la parte inferior, pero no ambos juntos.
No estoy buscando el código para una solución completa (aunque eso sería genial). En cambio, estoy buscando la "forma de Reaccionar" para modelar esta situación. ¿Es el estado de la posición de desplazamiento o no? ¿Qué estado debo seguir para mantener mi posición en la lista? ¿Qué estado debo mantener para activar un nuevo procesamiento cuando me desplazo cerca de la parte inferior o superior de lo que se representa?