Как начать снизу без загрузки полного набора данных, а затем загрузить следующую партию при прокрутке вверх - PullRequest
0 голосов
/ 09 июля 2019

У меня есть ситуация с InfiniteLoader+List в react-virtualized, где loadMoreRows и rowCount вызывают у меня горе.

Цель

  1. Загрузить последние 40 сообщений отхранилище данных
  2. Список начать внизу
  3. При прокрутке вверх запросить больше элементов для загрузки
  4. Когда новыйстрока добавляется, добавляется в нижнюю часть и автоматически прокручивается вниз

Что работает

  • Добавление новой строки работает.Я могу вызвать scrollToIndex списка, когда новая строка загружается через loadMoreRows и из хранилища данных извлекается сообщение, что увеличивает количество строк
  • Загрузка пакета last 40строки работают

Что не работает

  • Обеспечение / обновление индексов пуска / остановки после первой загрузки, чтобы они знали, что мы загрузили 40 строк из bottom , так что прокрутка вверх дает индексы, например, 161-200 и т. д., чтобы предотвратить загрузку строк, начиная с 0-40.

Что я пробовал

Запуск загрузки с помощью вызова loadMoreRows ({startIndex = 200, stopIndex = 240})

Пока это работает, чтопервая партия строк перечисляется сверху вниз, от 200 до 240, как я хочу.Тем не менее, есть побочный эффект от этого, это означает, что следующая партия строк все еще начинается с 0 и имеет вид, например, 0-40, 41-80, 81-120 и так далее.Тем не менее, это приводит к тому, что все сообщения будут загружены и в совершенно неправильном порядке

Запуск загрузки с помощью вызова loadMoreRows ({startIndex = 0, stopIndex = 40})и передача реквизита, который перемещает scrollToIndex в последнюю строку

Это работает настолько, что первая партия строк загружается с 0-40, скроллер перемещается в строку 40, а следующая партия 41-80 имеет видзагружен и тд.Они загружаются в правильном порядке по сравнению с вышеописанным сценарием.Однако, как и в последнем сценарии, загружаются все сообщения, что не очень хорошо, так как буквально десятки тысяч строк могут быть загружены только в начале.

Вопрос (другими словами, может быть, более конкретный?)

Как мне сказать индексам, что мы на самом деле между 200-240, а не 0, чтобы прокрутка вверх проходила по индексам пуска / остановки 161/200, ии так далее?

Ссылки

Предостережения

  • Plunker показывает довольно обычную реализацию InfiniteLoader и List, но также включает WindowScroller.Лично я не забочусь о WindowScroller, но вместо того, чтобы пытаться изменить пример с риском испортить реализацию, я принял его как есть, потому что он очень близко показывает реализацию, которую я начинаю от
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...