组件
虚拟列表 Virtual List
VirtualList:虚拟列表,只挂载进入窗口的行。视口用按行高计算的占位元素维持滚动长度,行相对它定位;一万行列表在 DOM 中只占一个窗口,而不是全部行。固定行高让计算可靠,也不需要测量过程。
#基础用法
<script setup lang="ts">
import { VirtualList } from "@bysages/vue";
const rows = Array.from({ length: 10000 }, (_, index) => `Row ${index + 1}`);
</script>
<template>
<VirtualList :items="rows" :item-height="36" :height="216" class="w-full">
<template #item="{ item, index }">
<div
class="flex h-full items-center border-b border-border px-4 text-sm"
:class="index % 2 ? 'text-secondary' : ''"
>
{{ item }}
</div>
</template>
</VirtualList>
</template>
#属性
#VirtualList
VirtualList:虚拟列表,只挂载进入窗口的行。视口用按行高计算的占位元素维持滚动长度,行相对它定位;一万行列表在 DOM 中只占一个窗口,而不是全部行。固定行高让计算可靠,也不需要测量过程。
| 属性 | 类型 | 默认值 | 描述 |
|---|---|---|---|
items | Array as PropType<unknown[]> | — | |
itemHeight | Number as PropType<number> | 40 | 每行占用的高度;固定行高时配置更简单 |
height | [Number, String] as PropType<number | string> | 320 | 列表滚动视口的高度 |