虚拟滚动加载高级列表ReVirtualScrollList

233 阅读2分钟

虚拟滚动加载高级列表ReVirtualScrollList

组件实现基于 Vue3 + Element Plus + Typescript,同时引用 vueUse + lodash-es + tailwindCss (不影响功能,可忽略)

结合 ReScrollListReVirtualList 的功能,在自动滚动加载的同时,优化大数据列表展示,具体使用可以按照实际应用选择

基础

查看 /demo/list/virtual-scroll.md

ReVirtualScrollList属性

字段说明类型默认值
items必填,列表项数据集Record<string, any>[]-
metas必填,列表项展示配置ReListItemMetas-
title列表标题string-

除了上述属性,支持ReList所有属性,默认会被ReList实例继承

同时ReVirtualScrollList属性也继承了ReVirtualList属性和ReScrollList属性

ReVirtualScrollList事件

事件名说明格式
update:checks已选中列表发生变化时触发(checks: Array<string | number>) => void
check点击某个复选框时触发(checked: boolean, id: string | number, item: Record<string, any>) => void
update:items列表项集合更新时触发(items: ReListProps["items"]) => void
scroll容器滚动时触发(scrollTop: number) => void
scroll-bottom滚动到底时触发() => void
update:total数据总数切换时触发(total: number) => void

ReVirtualScrollList插槽

插槽名说明
default列表项作用域插槽,带有 item、metas 两个作用域变量
titleList页头标题插槽
extraList页头额外信息插槽
footerPageList页脚插槽,在分页器之前

ReVirtualScrollList Expose

字段说明类型
disabledLoad是否加载完成Ref<boolean>
checks已选中集合Array<string | number>
scrollTop当前滚动位置离容器顶部距离number
startPadding前置占位高度number
endPadding后置占位高度number
startIndex渲染数据开始索引number
endIndex渲染数据结束索引Ref<number>
loading加载状态Ref<boolean>
currentPage当前页码Ref<number>
pageSize页大小Ref<number>
total数据总数,remote时为 props.totalInstanceType<typeof ElPagination>
dataSource列表项集合Ref<ReTableRow[]>
toRemote发起数据请求,需要手动设置页码后在调用,否则数据更新会重复(callback: (success: boolean) => void) => void
refresh刷新,页码从1开始() => void
nextPage请求下一页数据() => void
scrollTo滚动到指定距离(scrollTop: number) => void
scrollToIndex滚动到指定索引位置(index: number) => void

源代码

Github

可以通过查看具体实现,如果遇到问题可以留言或者提出issue。

如果觉得对您有帮助的话,可以请小编瑞一下

WechatIMG6.jpg

IMG_2654.JPG