更新记录

0.0.1(2025-08-16) 下载此版本

init


平台兼容性

uni-app(4.11)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
- - - - - - - - -
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 快应用-华为 快应用-联盟
- - - - - - - - - - -

uni-app x(4.07)

Chrome Safari Android iOS 鸿蒙 微信小程序
- - - - - -

CustomVirtualList 自定义虚拟列表组件

一个基于uni-app scroll-view实现的高性能虚拟列表组件,适用于显示大量数据的场景。

特点

  • 基于scroll-view组件,保留其所有原生功能
  • 虚拟渲染,只渲染可视区域内的列表项,大幅提升性能
  • 支持动态数据更新
  • 支持自定义列表项样式
  • 支持下拉刷新和上拉加载更多

使用方法

引入组件

import CustomVirtualList from '@/components/custom-virtual-list/list.vue';

export default {
  components: {
    CustomVirtualList
  }
}

基础用法

<custom-virtual-list
  :data="listData"
  :item-height="80"
  :buffer-size="5"
  scroll-y
>
  <template v-slot="{ item, index }">
    <view class="list-item">
      <text>{{ index + 1 }}. {{ item.title }}</text>
    </view>
  </template>
</custom-virtual-list>

带下拉刷新和上拉加载更多

<custom-virtual-list
  :data="listData"
  :item-height="80"
  :buffer-size="5"
  scroll-y
  :refresher-enabled="true"
  :refresher-triggered="isRefreshing"
  @scrolltolower="loadMore"
  @refresherrefresh="refresh"
>
  <template v-slot="{ item, index }">
    <view class="list-item">
      <text>{{ index + 1 }}. {{ item.title }}</text>
    </view>
  </template>
</custom-virtual-list>

属性

属性名 类型 默认值 说明
data Array [] 列表数据源
item-height Number - 列表项高度(px),必须是固定高度
buffer-size Number 5 缓冲区大小,即可视区域外预渲染的列表项数量
data-key String '' 数据项的唯一键名,用于优化渲染性能

除了以上属性外,组件还支持scroll-view的所有原生属性,如:

属性名 类型 默认值 说明
scroll-x Boolean false 是否允许横向滚动
scroll-y Boolean true 是否允许纵向滚动
upper-threshold Number/String 50 距顶部/左边多远时触发scrolltoupper事件
lower-threshold Number/String 50 距底部/右边多远时触发scrolltolower事件
scroll-top Number/String 0 设置竖向滚动条位置
scroll-left Number/String 0 设置横向滚动条位置
scroll-into-view String '' 值应为某子元素id,滚动到该元素
scroll-with-animation Boolean false 在设置滚动条位置时使用动画过渡
enable-back-to-top Boolean false iOS点击顶部状态栏、安卓双击标题栏时,滚动条返回顶部
show-scrollbar Boolean true 是否显示滚动条
refresher-enabled Boolean false 开启自定义下拉刷新
refresher-threshold Number 45 设置自定义下拉刷新阈值
refresher-default-style String 'black' 设置自定义下拉刷新默认样式
refresher-background String '#FFFFFF' 设置自定义下拉刷新区域背景颜色
refresher-triggered Boolean false 设置当前下拉刷新状态

事件

事件名 说明 回调参数
visible-change 可视区域数据变化时触发 { startIndex, endIndex, visibleData }

除了以上事件外,组件还支持scroll-view的所有原生事件,如:

事件名 说明 回调参数
scroll 滚动时触发 e.detail = {scrollLeft, scrollTop, scrollHeight, scrollWidth, deltaX, deltaY}
scrolltoupper 滚动到顶部/左边时触发 -
scrolltolower 滚动到底部/右边时触发 -
refresherpulling 自定义下拉刷新控件被下拉时触发 -
refresherrefresh 自定义下拉刷新被触发时触发 -
refresherrestore 自定义下拉刷新恢复时触发 -
refresherabort 自定义下拉刷新被中止时触发 -

插槽

插槽名 说明 作用域参数
default 列表项内容 { item, index }

注意事项

  1. 列表项高度必须是固定的,否则可能导致渲染错位
  2. 为了获得最佳性能,建议设置合适的buffer-size值,不宜过大或过小
  3. 在App平台的nvue页面中,建议使用原生的list组件,性能更佳
  4. 如果列表项高度不固定,可能需要更复杂的实现方案

示例

请参考 example.vue 文件查看完整使用示例。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。