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

Vxe UI vue vxe-table select 下拉框选项列表数据量超大过大时卡顿解决方法

Vxe UI vue vxe-table vxe-grid select 下拉框选项列表数据量超大过大时卡顿解决方法

查看 github
vxe-table 官网

vxe-table 本身支持虚拟滚动,数据量大也是支持的,但是如果在可编辑表格中使用下拉框,下拉框的数据量超大时,可能就会卡顿、老版本的下拉框不支持虚拟滚动,可以更新到 v4.7+ 版本,就可以使用下拉框虚拟滚动,配合表格虚拟滚动,渲染性能那是相当可以的。

可编辑表格使用下拉框

每个单元格中放着渲染1万条的下拉框丝滑流程
在这里插入图片描述

<template><div><vxe-grid v-bind="gridOptions"></vxe-grid></div>
</template><script>
import Vue from 'vue'
export default {data () {const sexEditRender = {name: 'VxeSelect',options: [{ label: '女', value: 'Women' },{ label: '男', value: 'Man' }]}const roleEditRender = {name: 'VxeSelect',props: {filterable: true},options: []}const gridOptions = {border: true,editConfig: {trigger: 'click',mode: 'row'},columns: [{ type: 'seq', width: 70 },{ field: 'name', title: 'Name', minWidth: 200, editRender: { name: 'VxeInput' } },{ field: 'sex', title: '下拉单选', width: 200, editRender: sexEditRender },{ field: 'role', title: '大数据量选项', width: 200, editRender: roleEditRender }],data: [{ id: 10001, name: 'Test1', role: 'Develop', sex: '', sexList: [], type: '', typeList: [] },{ id: 10002, name: 'Test2', role: 'Test', sex: 'Women', sexList: ['Man', 'Women'], type: '2-1', typeList: ['1-2', '2-1'] },{ id: 10003, name: 'Test3', role: 'PM', sex: 'Man', sexList: [], type: '', typeList: [] }]}return {gridOptions,sexEditRender,roleEditRender}},created () {// 模拟后端接口setTimeout(() => {const list = []for (let i = 0; i < 10000; i++) {list.push({value: `role${i}`,label: `角色${i}`})}this.roleEditRender.options = list}, 100)}
}
</script>

接下来测试下拉框渲染性能

加载1万条用时45毫秒
在这里插入图片描述
加载10万条用时398毫秒
在这里插入图片描述

加载30万条用时848毫秒
在这里插入图片描述

<template><div><p><vxe-button @click="loadData(1000)">加载1千条</vxe-button><vxe-button @click="loadData(10000)">加载1万条</vxe-button><vxe-button @click="loadData(100000)">加载10万条</vxe-button><vxe-button @click="loadData(300000)">加载30万条</vxe-button></p><vxe-select v-model="val1" v-bind="selectOptions"></vxe-select></div>
</template><script>
import Vue from 'vue'
import { VxeUI } from 'vxe-pc-ui'
export default {data () {const selectOptions = {loading: false,clearable: true,filterable: true,options: []}return {val1: null,selectOptions}},methods: {loadData (size) {const list = []this.selectOptions.loading = truefor (let i = 0; i < size; i++) {list.push({value: `${i}`,label: `选项 ${i}`})}setTimeout(() => {const startTime = Date.now()this.selectOptions.options = listthis.selectOptions.loading = falsethis.$nextTick(() => {VxeUI.modal.message({content: `加载时间 ${Date.now() - startTime} 毫秒`,status: 'success'})})}, 300)}},created () {this.loadData(50)}
}
</script>
http://www.lryc.cn/news/461279.html

相关文章:

  • python 基础笔记(其实有点内容的)
  • (39)MATLAB生成高斯脉冲及其频谱
  • 35岁前端开发者:转型还是坚守?
  • 对MVC详细解读
  • centos系列图形化 VNC server配置,及VNC viewer连接,2024年亲测有效
  • STL序列式容器之string的基本用法及实现
  • lua脚本使用cjson转换json时,空数组[]变成了空对象{}
  • ImportError: /../lib/libstdc++.so.6: version `GLIBCXX_3.4.29解决方案
  • java-实现一个简单的httpserver-0.6.0
  • 【论文#码率控制】ADAPTIVE RATE CONTROL FOR H.264
  • 2024-10-16 学习人工智能的Day8
  • Python Django 数据库优化与性能调优
  • 基于SpringBoot+微信小程序的农产品销售平台
  • 微前端学习以及分享
  • 【Linux-进程间通信】vscode使用通信引入匿名管道引入
  • nerd bug:VPG多次计算vnetloss的计算图报错的解决
  • BigDecimal类Date类JDK8日期
  • MybatisWebApp
  • 第十五章 RabbitMQ延迟消息之延迟插件
  • OpenAI 公布了其新 o1 模型家族的元提示(meta-prompt)
  • Java基础14-网络编程
  • sed命令详解
  • Linux高阶——1013—正则表达式练习
  • 【CMake】为可执行程序或静态库添加 Qt 资源文件,静态库不生效问题
  • 服务器、jvm、数据库的CPU飙高怎么处理
  • 自适应过滤法—初级
  • UML图有用吗?真正厉害的软件开发,有用的吗?什么角色用?
  • 基于Java+Springboot+Vue开发的酒店客房预订管理系统
  • OpenCV高级图形用户界面(5)获取指定滑动条(trackbar)的当前位置函数getTrackbarPos()的使用
  • 拓扑排序在实际开发中的应用