У меня есть ситуация с InfiniteLoader+List
в react-virtualized
, где loadMoreRows
и rowCount
вызывают у меня горе.
Цель
- Загрузить последние 40 сообщений отхранилище данных
- Список начать внизу
- При прокрутке вверх запросить больше элементов для загрузки
- Когда новыйстрока добавляется, добавляется в нижнюю часть и автоматически прокручивается вниз
Что работает
- Добавление новой строки работает.Я могу вызвать 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, но вместо того, чтобы пытаться изменить пример с риском испортить реализацию, я принял его как есть, потому что он очень близко показывает реализацию, которую я начинаю от