当前位置: 首页 > news >正文

vue 中支持不定高的虚拟滚动的表格 vxe-table 的使用,动态高度虚拟列表高性能表格

vue 中支持不定高的虚拟滚动的表格 vxe-table 的使用,动态高度虚拟列表高性能表格,项目的中有些场景不仅需要加载大数据量的表格,同时也要支持不固定高度,同时需要自适应行高的表格,这时候 vxe-table 就排上用场了,接下来看看如何使用。

查看官网:https://vxetable.cn
gitbub:https://github.com/x-extends/vxe-table
gitee:https://gitee.com/x-extends/vxe-table

Video_2025-12-08_095402-ezgif.com-optimize

实现原理,由于未加载的行是无法知道行高的。虚拟算法原理是估算虚拟行的行高,通过已渲染的行来纠正行高值。只有当所有数据被查看过一次之后才能达到和同等行高一样的效果。否则快速拉动滚动时会出现鼠标偏移,效果上会比同等行高略差

通过 show-overflow=false 关闭自适应行高。

<template><div><vxe-select v-model="rowSize" :options="dataOptions" @change="loadList()"></vxe-select><vxe-grid v-bind="gridOptions"></vxe-grid></div>
</template><script setup>
import { ref, reactive, nextTick } from 'vue'
import { VxeUI } from 'vxe-table'const rowSize = ref(100)const dataOptions = ref([{ label: '加载 3 行', value: 3 },{ label: '加载 20 行', value: 20 },{ label: '加载 100 行', value: 100 },{ label: '加载 500 行', value: 500 },{ label: '加载 1000 行', value: 1000 },{ label: '加载 5000 行', value: 5000 },{ label: '加载 10000 行', value: 10000 },{ label: '加载 30000 行', value: 30000 }
])// 在单元格中显示图片
const imgUrlCellRender = reactive({name: 'VxeImage',props: {width: 36,height: 36}
})const gridOptions = reactive({border: true,loading: false,showOverflow: false,height: 800,columnConfig: {resizable: true},virtualYConfig: {enabled: true,gt: 0},columns: [{ type: 'checkbox', width: 60 },{ title: '列0', field: 'col0', width: 100 },{ title: '列1', field: 'imgUrl', width: 80, cellRender: imgUrlCellRender },{ title: '列2', field: 'col2', width: 90 },{ title: '列3', field: 'col3', width: 200 },{ title: '列4', field: 'col4', width: 140 },{ title: '列5', field: 'col5', width: 300 },{ title: '列6', field: 'col6', minWidth: 160 },{ title: '列7', field: 'col7', minWidth: 120 },{ title: '列8', field: 'col8', minWidth: 120 }],data: []
})// 模拟行数据
const loadList = () => {gridOptions.loading = truesetTimeout(() => {const dataList = []for (let i = 0; i < rowSize.value; i++) {const item = {id: 10000 + i,imgUrl: i % 3 === 0 ? 'https://vxeui.com/resource/img/546.gif' : 'https://vxeui.com/resource/img/673.gif'}for (let j = 0; j < 10; j++) {if (i % 9 === 0) {item[`col${j}`] = `值_${i}_${j} 内容9内容9 内容9内容9内容9 内容9内容9内容9内容9 内容9内容9内容9内容9 内容9内容9内容9 内容9内容9`} else if (i % 8 === 0) {item[`col${j}`] = `值_${i}_${j} 内容8内容8内容8内容8`} else if (i % 7 === 0) {item[`col${j}`] = `值_${i}_${j} 内容7内容7`} else if (i % 6 === 0) {item[`col${j}`] = `值_${i}_${j} 内容6内容6内容6内容6内容6内容6内容6内容6`} else if (i % 5 === 0) {item[`col${j}`] = `值_${i}_${j} 内容5内容5内容5内容5内容5`} else if (i % 4 === 0) {item[`col${j}`] = `值_${i}_${j} 内容4内容4内容4内容4内容4内容4内容4内容4内容4内容4内容4内容4`} else {item[`col${j}`] = `值_${i}_${j}`}}dataList.push(item)}const startTime = Date.now()gridOptions.data = dataListgridOptions.loading = falsenextTick(() => {VxeUI.modal.message({content: `加载时间 ${Date.now() - startTime} 毫秒`,status: 'success'})})}, 350)
}loadList()
</script>

https://gitee.com/x-extends/vxe-table

http://www.rkmt.cn/news/81738.html

相关文章:

  • windriver 第4章:PCI Express 概述
  • Docker Swarm 的负载均衡和平滑切换原理 - 实践
  • 2025年推荐实力户外滑梯厂家飞友,以专业品质守护儿童欢乐时光 - 速递信息
  • 纯棉卫生巾推荐,4款热门产品深度横评,看完这篇再下单! - 速递信息
  • 2025年最新幼儿园教玩具品牌推荐,守护孩子成长——飞友用硬核筑牢成长防线 - 速递信息
  • 吐血整理!揭秘2025年新房装修公司哪家靠谱! - 品牌测评鉴赏家
  • 创建用户赋予权限
  • 2025 最新实测:AI 学习机是智商税吗?有没有用 + 高性价比品牌清单 - 品牌测评鉴赏家
  • AI 学习机品牌推荐(2025 年 12 月最新) 高性价比机型选购指南 - 品牌测评鉴赏家
  • 学习差的孩子用学习机是智商税吗?双线模式针对性提分解决方案 - 品牌测评鉴赏家
  • 买完学习机还需要去线下补课吗? AI 学习机 + 自习室是中小学生普娃的更优解! - 品牌测评鉴赏家
  • 拼多多代运营公司推荐排行榜:2025年行业权威榜单深度解析 - 前沿公社
  • counting
  • Dev-C++ 安装
  • Bloxstrap - 增强版Roblox启动器
  • 【Linux】服务器配置 ssh 公钥 私钥认证登录
  • windriver 第1章:概述
  • offer选择:优先薪资还是平台?3分钟理清决策思路
  • 价值不在你心里,而在你我之间——用“怎么做”重新定义AI时代的善与恶
  • 第五十一天
  • 基于FastAdmin的二手摩托车在线交易平台 -悟饭源码 - 指南
  • 基于FastAdmin的二手摩托车在线交易平台 -悟饭源码 - 指南
  • AI 学习机真能提分吗?2025 年首选推荐 科学选购指南 - 品牌测评鉴赏家
  • 实分析随笔
  • 自媒体怎么做到批量自动发文?亲测AI智能媒体助理更稳定
  • Ansible学习----管理复杂的 Play 和 Playbook 内容 - 教程
  • 第五十天
  • 2025 最新不锈钢五金厂家TOP5 评测!技术赋能 + 品质保障权威榜单发布,匠心打造高端五金解决方案 - 全局中转站
  • 1001111
  • IIS双域名双证书配置方法