Создание виртуализированного списка с нуля

Марк Джордан написал статью про то, как создать виртуализированный список с нуля — "Building a virtualized list from scratch".

Виртуализированные списки используют для оптимизации рендеринга, когда надо показать очень большое количество элементов. В таких списках рендерятся только те элементы, которые видны пользователю. В React-экосистеме уже есть готовые компоненты для создания таких списков, но у Марка возникла проблема при интеграции с другим фреймворком, поэтому ему пришлось написать свою реализацию.

Суть библиотеки такая: берём внешний контейнер, для которого, выставляем overflow: scroll и внутренний контейнер с высотой numItems * itemHeight. При скролле внутреннего контейнера высчитываем диапазон индексов тех элементов, которые надо отобразить (например, scrollTop / itemHeight для первого индекса). Рендерим эти элементы.

Мне нравятся статьи "Делаем N с нуля", обычно в них разбирается основная идея, которую можно использовать при создании собственной реализации с учётом особенностей проекта или чтобы лучше понять устройство используемой библиотеки. В общем, если будете делать что-то подобное (не обязательно в React), советую почитать статью.

https://medium.com/ingeniouslysimple/building-a-virtualized-list-from-scratch-9225e8bec120

← На главную