Как я отрендерил миллион строк в React

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Недавно я столкнулся с задачей, известной как one billion row challenge. Два аспекта этого вызова меня заинтриговали:

  1. Каковы будут последствия, если я попробую решить этот вызов на фронтенде?

  2. Удастся ли мне это?

Хотя я не уверен в возможности визуализировать миллиард строк в таблице, цифра в миллион кажется вполне достижимой. Узнав о таком интересном вызове, я решил заняться маленьким проектом, целью которого было отображение миллиона строк в React.

Давайте я вас подробно ознакомлю с тем, что именно произошло, как это было сделано и по каким причинам.

Рекомендация

Для более глубокого понимания статьи, я рекомендую вам изучить следующие темы:

  • Элемент Canvas и его API

  • Контекст рендера

  • Основы рисования на холсте

Что мы делаем?

Мы предпримем попытку разработать компонент, способный эффективно визуализировать миллион строк в ReactJS. Для этой цели мы воспользуемся рядом методов, схожих с теми, что используются в таких продуктах, как Google Sheets и Glide Data Grid.

Почему мы это делаем?

Как я уже упоминал в начале, есть веские причины для рассмотрения этой темы.

Возможно, многие из вас сталкивались с необходимостью виртуализации данных, чтобы отображались только текущие видимые строки. Это общепринятый подход при управлении большими объемами данных.

Тем не менее, эффективность такого метода может снижаться при больших размерах области просмотра, например, когда требуется одновременно просматривать от 150 до 250 строк. В результате алгоритм виртуализации должен:

  1. Удалять все DOM-элементы в области видимости.

  2. Добавлять новый набор из 150+ DOM-элементов.

Этот процесс может существенно снизить скорость и плавность прокрутки, ухудшая тем самым пользовательский опыт.

Кроме того, я изучил другие инструменты и библиотеки, такие как:

  • Google Sheets

  • Glide Data Grid

Они эффективно справляются с задачей отображения миллиона строк.

Теперь, когда мы понимаем причины, давайте рассмотрим нестандартный подход к решению этой распространенной проблемы.

Источник: https://habr.com/ru/companies/bothub/articles/803555/


Интересные статьи

Интересные статьи

19 января 2024 года состоялся релиз мажорной версии открытого проекта для работы с электронной почтой (коллекция компонентов для создания электронных писем с использованием React и TypeScript) React E...
Я работаю фронтенд-разработчицей в IT-компании, и многие из моих проектов на протяжении долгого времени собирались с использованием Webpack. Настройка Webpack иногда бывала сложной, но в целом он спра...
Привет! Меня зовут Сергей Курочкин, я руковожу Android-разработкой в СберМаркете. Сегодня я расскажу, зачем нужен Jetpack Compose в проектах React Native, и поделюсь опытом интеграции фреймворка в наш...
Эта документация поможет найти компромиссы между различными шаблонами (patterns) React, а также определить, когда использование каждого из них будет наиболее целесообразн...
Продолжая тематику коротких полезных скриптов, хотелось бы познакомить читателей с возможностью построения поиска по контенту файлов и изображений в 104 строки. Это конечно не будет у...