https://codesandbox.io/s/l79vn4rowq
При удалении элементов я не повторно инициализирую cellMeasurerCache, поскольку у меня уже есть размеры каждого элемента. При этом верхняя и нижняя границы для заполнения кэша позиций не устанавливаются, поскольку CellMeasurer не вызывает invalidateCellSizeAfterRender, если измерения уже присутствуют в кэше.
//hack to set a range for populating position cache
masonryInstance.invalidateCellSizeAfterRender({ rowIndex: 0 });
masonryInstance.invalidateCellSizeAfterRender({
rowIndex: batchSize - 1
});
//populate position cache
masonryInstance.recomputeCellPositions();
Мне пришлось использовать метод взлома invalidateCellSizeAfterRender для установки верхней и нижней границ для заполнения кеша позиций. Есть лучший способ это сделать?





Я давно не работал с компонентом
Masonry. То, что вы описываете, похоже, может быть ошибкой в Masonry. Все, что я ожидал от вас, это вызватьmasonryInstance.clearCellPositions()после обновления вашего кэша позиций, но этого недостаточно.