Проблема - setSelected(newValue)
отправляет события.Когда мы делаем это в цикле для тысячи элементов ( скажем ) - происходит тысяча событий, тысячи запросов в очереди на асинхронное обновление в React, которые могут быть учтены за всю задержку.
Я исправил это, используя другую версию setSelected
- setSelected(newValue, clearSelection, suppressFinishActions)
.К сожалению, это не написано в официальной документации.Идея состоит в том, чтобы использовать эту версию для всего, кроме последнего выбора, чтобы все отправки событий были подавлены и использовать обычный выбор, который мы использовали всегда, чтобы выбрать последний элемент, чтобы он также вызывал необходимые событиядля onRowSelected
, onSelectionChanged
и т. д. для нормальной работы.
this.api.forEachNodeAfterFilter(node => {
if (node.childIndex >= startIndex && node.childIndex < endIndex) {
selectedNodes.push(node);
}
});
if (selectedNodes.length > 0) {
// setSelected re-renders every time so use suppressFinishActions except last one
for (let i = 0; i < selectedNodes.length - 1; i++) {
selectedNodes[i].setSelected(true, false, true);
}
selectedNodes[selectedNodes.length - 1].setSelected(true);
}