Как отложить загрузку элементов в сетке vaadin в LitElement
У меня есть требование оптимально отображать бесконечные прокручиваемые данные в LitElement. Vaadin-grid кажется подходящим для варианта использования. Однако данных огромно. Итак, я пытаюсь лениво загружать данные кусками из бэкэнда. Этот backend api поддерживает возврат записей по частям (таким образом, что общее количество записей будет возвращено при первом вызове). Есть ли какой-либо способ ленивой загрузки данных кусками из бэкэнда в vaadin-grid с LitElement .
1 ответ
Итак, вот пример из упомянутого стартера:
private async getGridData(params: GridDataProviderParams, callback: GridDataProviderCallback) {
const index = params.page * params.pageSize;
const data = await SamplePersonEndpoint.list(index, params.pageSize, params.sortOrders as any);
callback(data ?? []);
}
Как видите, параметры содержат page и pageSize, которые затем можно использовать в бэкэнде для разбиения на страницы.
SampleEndpoint использует это:
public List<SamplePerson> list(int offset, int limit, List<GridSorter> sortOrder) {
Page<SamplePerson> page = service
.list(PagingUtil.offsetLimitTypeScriptSortOrdersToPageable(offset, limit, sortOrder));
return page.getContent();
}