Приложение начинает тормозить из-за рендера большой таблицы: как бы ты профилировал, отлаживал и оптимизировал такую проблему?

Отрисовка таблицы с 10 000 строк вызывает лаги из-за большого количества DOM-элементов, что сильно нагружает браузер и замедляет рендеринг.

Короткий ответ

Что ответить на собеседовании

Отрисовка таблицы с 10 000 строк вызывает лаги из-за большого количества DOM-элементов, что сильно нагружает браузер и замедляет рендеринг.

Подробный разбор

Ответ с пояснениями

Отрисовка таблицы с 10 000 строк вызывает лаги из-за большого количества DOM-элементов, что сильно нагружает браузер и замедляет рендеринг.

Как исправить:

  • Виртуализация списка (виртуальный скролл) — отрисовывать в DOM только видимую часть таблицы, подгружая строки по мере прокрутки.
  • Пагинация — разбить данные на страницы, показывая ограниченное число строк за раз.
  • Оптимизация рендеринга — использовать мемоизацию, избегать лишних перерисовок.

Пример использования виртуального скролла с React и react-window:

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

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

<List
  height={500}
  itemCount={10000}
  itemSize={35}
  width={300}
>
  {Row}
</List>

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку