Skip to content

VirtualList

Универсальный список с виртуальным скроллом. Используется внутренне компонентом CommandPalette для наборов результатов больше 50 элементов, а также экспортируется для построения собственных списков.

Пропы

items

T[]

Полный список для виртуализации. T выводится из переданного массива.

itemHeight

number

Фиксированная высота каждой строки в пикселях.

containerHeight

number

Высота прокручиваемой области просмотра в пикселях.

overscan

number · по умолчанию: 3

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

activeIndex

number · по умолчанию: -1

Индекс (в items), который должен всегда оставаться в зоне видимости — задавайте его равным активному по клавиатуре пункту.

Слоты

#default

{ item, index }

Рендерит каждую видимую строку. item — значение из items, index — его позиция в полном (не виртуализированном) массиве.

vue
<VirtualList :items="results" :item-height="40" :container-height="400" :active-index="activeIndex">
  <template #default="{ item, index }">
    <div :class="{ active: index === activeIndex }">{{ item.label }}</div>
  </template>
</VirtualList>