Какие библиотеки использовал для виртуализации

Ответ

React Virtualized и React Window — самые популярные библиотеки для виртуализации списков.

React Virtualized — мощная, но немного устаревшая. Подходит для сложных сценариев (таблицы, динамические размеры элементов).

React Window — легковесная альтернатива от того же автора. Оптимальна для большинства случаев, особенно если элементы фиксированной высоты.

Пример с React Window:

import { FixedSizeList as List } from 'react-window';

const Row = ({ index, style }) => (
  <div style={style}>Row {index}</div>
);

const VirtualizedList = () => (
  <List height={400} itemCount={1000} itemSize={50} width={300}>
    {Row}
  </List>
);

Для таблиц можно использовать react-table с плагином виртуализации.

Если нужна виртуализация сетки — react-window тоже поддерживает FixedSizeGrid.

Ответ 18+ 🔞

А, слушай, вот это тема — виртуализация списков в Реакте, блядь! Ну, тут два главных героя, как в плохом сериале: React Virtualized и React Window. И сейчас я тебе, сука, разложу, кто из них уже немного в маразме, а кто ещё огурцом.

React Virtualized — это, типа, старый могучий орк, ёпта. Сильный, мощный, навороченный — таблицы, динамические размеры элементов, всякие сложные пиздюлины. Но, понимаешь, он уже слегка потрёпанный жизнью, тяжёлый, как чемодан без ручки. Для каких-то ебнутых сложных кейсов — ещё годится, но тащить его в простой проект — это как ехать на магазин за хлебом на танке, блядь.

React Window — это его младший брат, который взял только самое нужное и похудел на овердохуища килограммов. Тот же самый автор, кстати! Лёгкий, быстрый, и для 95% случаев — просто идеален, особенно если у тебя там элементы одной высоты. Все его и советуют.

Вот, смотри, как это просто, даже обезьяна поймёт:

import { FixedSizeList as List } from 'react-window';

const Row = ({ index, style }) => (
  <div style={style}>Row {index}</div>
);

const VirtualizedList = () => (
  <List height={400} itemCount={1000} itemSize={50} width={300}>
    {Row}
  </List>
);

Всё, блядь! Высоту списка, количество элементов, размер одного — задал и поехал. Никакой лишней хуйни.

А если тебе, сука, не список, а целая таблица нужна — тогда смотри в сторону react-table. Это вообще отдельная религия, но там можно прикрутить плагин для виртуализации, и будет тебе счастье.

Ну и на десерт: если вдруг тебе не список, а СЕТКА, понимаешь, типа как в Pinterest — то react-window и тут не подведёт, у него есть FixedSizeGrid. В общем, инструмент на все случаи жизни, ёпта.

Короче, если не хочешь, чтобы твое приложение легло плашмя от 10 тысяч строк в списке — бери react-window и не парься. А старичка Virtualized вспоминай только в кошмарных снах про legacy-код, блядь.