vxe table虚拟滚动

news/2024/12/2 11:34:34/

需求背景:

表格涉及手工录入,当数据量超过30条时,编辑会有明显卡顿,数据量越大,卡顿时间越久。

产品框架:

vue2.5.2

view-design4.7.0

PS:前端基本没人管的老项目。。

原因: 

1、组件实例过多

2、v-model在输入框输入使频繁触发更新,频繁重绘性能开销大

为什么要使用 vxe table:

公司做的SaaS服务系统,里面状态逻辑繁多,最开始使用iview-table写的,上线后数据量大时用户手工编辑明显卡顿,需要快速解决问题。当时想的是做分页,但不符合产品设计以及代码逻辑改动较大,调研后采用长期维护的vxe-table V3版本

实现思路:

需要做到

1、兼容原本iview表单组件

2、平滑过渡,尽可能少的改动代码

3、了解vxe-table组件以及api 

下载vxe-table 以及兼容iview插件

 npm install xe-utils vxe-table@legacy vxe-table-plugin-iview

项目中全局引入或者按需引入 

  此示例为全局引入

import VXETable from 'vxe-table'
import VXETablePluginIView from 'vxe-table-plugin-iview'
import 'vxe-table-plugin-iview/dist/style.css'
import 'vxe-table/lib/style.css'
Vue.use(VXETable)
VXETable.use(VXETablePluginIView)

 iview-table修改为vxe-grid

 这里采用vxe-grid高级表格,因为它的插槽功能更加强大,能兼容iview组件

<Table><\Table>
替换为
<vxe-grid><\vxe-grid>
去掉原有表格所有attrs和listeners

配置vxe-grid中的 attrs 和 listeners 

<vxe-grid ref='xGrid' v-bind="gridOptions"> </vxe-grid>
gridOptions: {border: true,  //显示边框resizable: true, //列是否允许拖动列宽调整大小showOverflow: true, //当内容过长时显示为省略号footerMethod: this.footerMethod, //表尾的数据获取方法,返回一个二维数组,做的金额合计项scrollY: { enabled: true,  //开启虚拟滚动gt: 15,   //指定大于指定行时自动启动纵向虚拟滚动mode: 'wheel'  //高级滚动模式},maxHeight: 416,align: 'left',columns: [], //列配置data: []  //数据源
},

代码调整的注意点 

1、表格columns配置列改动----iview原有key 改为 field,slot改为slots

2、插槽解构值改动----iview原有slot-scope="{ row, index }" slot="fileName" 改为  #[slotsName]="{ row, rowIndex}"

3、表格复选框以及全选功能需要按实际需求调整

4、底部显示合计项要在实例上配置show-footer属性

5、功能操作之后刷新表格

this.gridOptions.data = tableData

this.$refs.xGrid.reloadData(this.gridOptions.data)

更多的细节请自行看文档 

 vxe-table v3 (vxetable.cn)

总结 

最开始按照文档的按理写法根本适配不了原有项目中的组件,摸索了一天文档,才知道问题出在哪里。没啥多说的,多看文档!多看文档!多看文档!  =。=

 

 

 

 

 

 

 

 

 


http://www.ppmy.cn/news/1082173.html

相关文章

剪枝基础与实战(5): 剪枝代码详解

对模型进行剪枝,我们只对有参数的层进行剪枝,我们基于BatchNorm2d对通道重要度 γ \gamma γ参数进行稀释训练。对BatchNorm2d及它的前后层也需要进行剪枝。主要针对有参数的层:Conv2d、BatchNorm2d、Linear。但是我们不会对Pool2d 层进行剪枝,因为Pool2d只用来做下采样,没…

testNG-@Factory详解+demo

Factory详解 简介策略&#xff1a;实例: 简介 Factory注解从字面意思上来讲就是采用工厂的方法来创建测试数据并配合完成测试&#xff0c;其主要应对的场景是&#xff1a;对于某一个测试用例或方法&#xff0c;我们需要输入多个测试数据进行测试&#xff0c;并且这些测试数据可…

【typeof instanceof Object.prototype.toString constructor区别】

几个数据类型判断区别 typeofinstanceofObject.prototype.toStringconstructor typeof 它返回的是一个字符串&#xff0c;表示未经过计算的操作数的类型 typeof(undefined) //"undefined"typeof(null) //"object"typeof(100) //"number"typeof…

Neo-reGeorg隧道搭建

目录 Neo-regeorg前言 环境搭建 具体使用 kail安装Neo-reGeorg kail内生成webshell并设置密码 kail与win10连接 windows server内打开服务 kail虚拟机访问windows server以及所在的内网 Neo-regeorg前言 regeorg为reDuh的升级版&#xff0c;主要功能就是把内网服务器的…

vue3 常见的警告记录

1. [Vue warn]: Invalid prop: type check failed for prop "stretch". Expected Boolean, got String with value "true". 解决办法&#xff1a;<el-tabs stretch"true"></el-tabs> 里的strech前面加上&#xff1a;即可 正确&…

【图像分割】实战篇(1)传统图像分割

聚类图像分割 K均值聚类是一种常用的聚类算法&#xff0c;它将图像像素分为K个不同的群集&#xff0c;以使每个群集内的像素具有相似的颜色或强度。这可以用于分割具有不同颜色或亮度的对象。 import numpy as np import matplotlib.pyplot as plt from sklearn.cluster impo…

博客系统后台前端UI设计

效果展示 API编写 index.js import axios from "./request"const fastdfs {delete: file/fastdfs/delete } const permission {search: "/sys/permission/search",add: "/sys/permission/add",update: "/sys/permission/update",d…

【Day-26慢就是快】代码随想录-二叉树-对阵二叉树

给定一个二叉树&#xff0c;检查它是否是镜像对称的。 —————————————————————————————————————————— 分析&#xff1a; 需要比较的是根节点的左右子树&#xff0c;且是两个子树的里侧和外侧的元素是否相等。 根据后序遍历算法&…