Nasza aplikacja wykorzystuje nieskończone przewijanie do nawigacji po dużych listach heterogenicznych elementów. Zmarszczek jest kilka:
- Często zdarza się, że nasi użytkownicy mają listę 10 000 pozycji i muszą przewijać ponad 3 tys.
- Są to bogate elementy, więc w DOM możemy mieć tylko kilkaset, zanim wydajność przeglądarki stanie się nie do przyjęcia.
- Przedmioty mają różną wysokość.
- Pozycje mogą zawierać obrazy i pozwalamy użytkownikowi przejść do określonej daty. Jest to trudne, ponieważ użytkownik może przeskoczyć do punktu na liście, w którym musimy załadować obrazy powyżej widocznego obszaru, co spowodowałoby przesunięcie treści w dół podczas ładowania. Niezrozumienie tego oznacza, że użytkownik może przeskoczyć do daty, ale potem zostać przeniesiony na datę wcześniejszą.
Znane, niekompletne rozwiązania:
( reaguj-nieskończone-przewijanie ) - To jest po prostu prosty element „załaduj więcej, gdy trafimy na najniższy” element. Nie usuwa żadnego DOM, więc umrze przy tysiącach przedmiotów.
( Pozycja przewijania z reakcją ) - Pokazuje, jak zapisać i przywrócić pozycję przewijania podczas wstawiania na górze lub na dole, ale nie obu razem.
Nie szukam kodu dla kompletnego rozwiązania (chociaż byłoby świetnie.) Zamiast tego szukam sposobu „Reagowania”, aby modelować tę sytuację. Czy stan pozycji przewijania jest czy nie? Jaki stan powinienem śledzić, aby zachować swoją pozycję na liście? Jaki stan muszę zachować, aby uruchomić nowy render, gdy przewijam w pobliżu dolnej lub górnej części renderowanego elementu?