ant a-table树形表格广量数据展开(expand)较慢卡顿性能优化

本文探讨了Ant Design Vue中树形表格在处理2000-2500节点时渲染速度缓慢的问题,并提供了针对性的优化方案。首先,通过优化templateslot插槽减少渲染时间3s;其次,检查并优化了expand方法,节省2s;最后,强调了避免动态改变columns配置和过度事件监听以防止不必要的重排,提升性能至ms级别。通过这些方法,显著提升了树形表格的展开和收缩速度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ant a-table树形表格广量数据展开较慢性能优化

基础框架:ui: ant design, tech: Vue
树节点: 2000-2500节点
需求:ant树形表格展开收缩渲染速度较慢,约为6-7s,处理性能优化

1.查看初始化表格结构判断操作栏是否存在大量需要优化的template slot插槽 (优化节省3s)
<a-table :columns="initColumns"
                   :scroll="{x: 1200}"
                   :pagination="false"
                   :dataSource="tableData.list"
                   :locale="{emptyText: '暂无数据'}"
                   rowKey="id"
                   :expandedRowKeys="expandedRowKeys"
                   size="middle"
                   @expand="expand">
            <template slot="action"
                      slot-scope="text,record">
              <!--此处省略多处不可描述的template render....-->
    		</template>
           
</a-table>

考虑是否存在可能需要大量遍历的通用method,有则集中处理,移至created/mounted生命周期或filters处理

本例存在row每次渲染时存在获取按钮权限方法重复执行(如图)

2.判断当前渲染方式(优化节省2s)

是否为以下方式:

  1. 未使用自定义expandedRowKeys方法透传ant组件,利用ant组件原生方式处理展开
  2. 使用:expandedRowKeys.sync="expandedRowKeys"+ @expand方式进行自定义展开
第一种方式:

建议进行chorme控制台performance性能record判断,根据当前响应时间大的进行优化,或建议使用树结构按需加载的方式进行优化

第二种方式:
  • 查看expand内部方法是否存在需要优化的地方

本例:

// 害 欲说还休 ┭┮﹏┭┮

以下为优化后的code:

expand(expanded, record) {
    if (!expanded) {
        this.expandedRowKeys = this.expandedRowKeys.filter((o) => record.id !== o)
    } else {
        this.expandedRowKeys.push(record.id)
    }
},

感谢查看至此的小伙伴们,TKS! 你以为到这里就结束了啦,no 好戏才刚刚开始~~0.0

3.!important 重点 (优化节省至ms级别)

请review相关代码,查看是否存在定制mouseover,hover等事件,是否存在动态改变columns配置的操作,这样会导致整个table重新渲染。如果存在fiexd的列,就会重新渲染计算每行行高,计算行高会引发重排导致页面异常卡顿

结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Calmness_7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值