Sobes.tech
Назад к вопросам
Middle
2

Можно ли использовать библиотеку для виртуального скролла? Как реализовать виртуализацию через @tanstack/virtual?

Компании, где спрашивали
Ifellow

Ответ от нейросети

sobes.tech AI

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

@tanstack/virtual — это современная библиотека для виртуализации списков в React и других фреймворках. Она позволяет рендерить только видимую часть элементов, уменьшая нагрузку на DOM.

Пример базовой реализации виртуализации с @tanstack/virtual в React:

import React from 'react';
import { useVirtual } from '@tanstack/react-virtual';

function VirtualList({ items }) {
  const parentRef = React.useRef();

  const rowVirtualizer = useVirtual({
    size: items.length,
    parentRef,
    estimateSize: React.useCallback(() => 35, []), // высота одного элемента
  });

  return (
    <div ref={parentRef} style={{ height: `300px`, overflow: 'auto' }}>
      <div style={{ height: `${rowVirtualizer.totalSize}px`, position: 'relative' }}>
        {rowVirtualizer.virtualItems.map(virtualRow => (
          <div
            key={virtualRow.index}
            ref={virtualRow.measureRef}
            style={{
              position: 'absolute',
              top: 0,
              left: 0,
              width: '100%',
              height: `${virtualRow.size}px`,
              transform: `translateY(${virtualRow.start}px)`,
            }}
          >
            {items[virtualRow.index]}
          </div>
        ))}
      </div>
    </div>
  );
}

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