Можно ли использовать React Virtualized, если нет понятия индекса строки для получения rowdata?Как использовать React Virtualized, если нет понятия индекса строки для получения rowdata?
Я бы хотел использовать React Virtualized для отображения данных, поступающих из большой (100k + rows) таблицы базы данных, которая постоянно изменяется: строки добавляются/удаляются/обновляются в случайных позициях в таблице.
У меня нет функции, которая может получить строку, используя индекс строки, поскольку положение каждой строки меняется каждые несколько секунд.
Таблица отсортирована и каждая строка гарантированно имеет уникальный контент, так, что у меня есть следующие функции:
getFirst/LastRow() => data
: получить содержание данных для (в настоящее время) первой/последней строки
getNext/PreviousRows(startData, nrRows) => data[]
: получить содержимое данных для (в данный момент) следующий/предыдущий nrRows
, начиная со строки с содержанием startData
findRow(data) => data
: найти строку, которая есть содержание data
У меня также есть функция наблюдателя, которая отслеживает мутации таблицы в реальном времени, поэтому я могу получить обратный вызов для каждой операции вставки/удаления/обновления для таблицы.
Есть ли способ сопоставить эти доступные функции с работоспособной виртуализованной конфигурацией React?
Изменения данных - это в основном обновления (которые изменят порядок сортировки) и вставки, которые обычно находятся в произвольной позиции в таблице (поэтому они также изменят порядок сортировки). Ошибки нечасты. Я надеялся, что может быть сделан какой-то метод recomputeRowIndices для повторной синхронизации данных строки RV с содержимым таблицы базы данных всякий раз, когда есть изменение в строках, которые в настоящее время управляются RV – willemx
Текущий API действительно используется для управления разбиением на страницы. Я написал некоторый код, чтобы заставить его работать и с прокруткой, но он немного неуклюж. Использование RV было бы намного лучше. – willemx
RV обычно работает очень хорошо, даже с большим количеством вставок/удалений/сортировок. Если вы напишете функцию сопоставления исполнителей (превращая API-интерфейс связанного списка в более массивную структуру), тогда вы должны быть в порядке. :) – brianvaughn