位置: IT常识 - 正文

解决el-tree子节点过多导致渲染缓慢问题(el-tree方法)

编辑:rootadmin
解决el-tree子节点过多导致渲染缓慢问题 1、问题背景

推荐整理分享解决el-tree子节点过多导致渲染缓慢问题(el-tree方法),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:el-tree添加节点,el-tree方法,el-tree自定义节点,el-tree怎么获取选中的节点,el-tree怎么获取选中的节点,el-tree resolve,el–tree,el–tree,内容如对您有帮助,希望把文章链接给更多的朋友!

在使用el-tree中,通常会调用后端接口从而去渲染tree。若后端返回数据量过于庞大,则会导致el-tree渲染缓慢的问题。此时我们通常会使用懒加载tree的方式,也就是点击某一个节点后去调取接口动态获取该节点的子数据。这种方式的确会对性能友好很多。但如果在节点数量在万级以上会有明显的卡顿,若数据量在五万以上可能会导致el-tree假死的情况。

2、解决方案

在市面上可能会有多种解决方案,我个人推荐 @wchbrad/vue-easy-tree这个包。这是一个作者结合el-tree结合虚拟滚动封装的的一个虚拟滚动tree组件,作者博客出处:

vue 实现 tree 树形大量数据的多功能虚拟滚动-Virtual Tree_Brad_chao的博客-CSDN博客_vue树形数据展示

下面是一篇虚拟滚动的文章。作者非常详细的介绍了虚拟滚动。

解决加载大量列表DOM导致浏览器性能瓶颈的虚拟滚动技术_程序员_Cc的博客-CSDN博客_虚拟滚动 

3、使用方式

使用npm下载:

npm install @wchbrad/vue-easy-tree解决el-tree子节点过多导致渲染缓慢问题(el-tree方法)

yarn下载

yarn add @wchbrad/vue-easy-tree

组件中进行引入:

import VueEasyTree from "@wchbrad/vue-easy-tree";// 样式文件,可以根据需要自定义样式或主题import "@wchbrad/vue-easy-tree/src/assets/index.scss"export default { components: { VueEasyTree }}

我使用vue-easy-tree的感觉就是兼容el-tree基本功能并支持大量数据虚拟滚动操作

5、demo演示

说明:通过一个小demo演示并对比el-tree与vue-easy-tree的渲染效率区别

如下图,通过两个按钮来对比两者之间的区别。base作为叶子节点数量。此时我将基数给予1w作为测试

<template> <div class="hello"> <!-- vue-easy-tree --> <el-button @click="()=>{ isBlock=true isBlock2 = false}" >vue-easy-tree</el-button> <!-- el-tree --> <el-button @click="()=>{ isBlock2=true isBlock=false }">el-tree</el-button> <vue-easy-tree ref="veTree" node-key="id" height="calc(100vh - 30px)" :data="treeData" :props="props" v-if="isBlock" ></vue-easy-tree> <el-tree ref="veTree" node-key="id" height="calc(100vh - 30px)" :data="treeData" :props="props" v-if="isBlock2" ></el-tree> </div></template><script>import VueEasyTree from "@wchbrad/vue-easy-tree";// 样式文件,可以根据需要自定义样式或主题import "@wchbrad/vue-easy-tree/src/assets/index.scss";export default { name: "HelloWorld", components: { VueEasyTree, }, data() { return { props: { label: "name", children: "children", }, isBlock:false, isBlock2:false, treeData: [], }; }, created() { const data = [], root = 8, children = 3, base = 10000; for (let i = 0; i < root; i++) { data.push({ id: `${i}`, name: `test-${i}`, children: [], }); for (let j = 0; j < children; j++) { data[i].children.push({ id: `${i}-${j}`, name: `test-${i}-${j}`, children: [], }); for (let k = 0; k < base; k++) { data[i].children[j].children.push({ id: `${i}-${j}-${k}`, name: `test-${i}-${j}-${k}`, }); } } } this.treeData = data; },};</script><!-- Add "scoped" attribute to limit CSS to this component only --><style scoped></style>

 我们先看下el-tree:

如图 我们点击了节点后大概几秒中之后才展开所有节点。并且在收缩节点时也会有明显的卡顿

我们再看看vue-easy-tree的效果。无卡顿,我们通过控制台可以看出,el-tree渲染了所有节点,而虚拟滚动只渲染了可视区域的节点。所以不会卡顿。 

以上就是vue-easy-tree的用法。需要的小伙伴可以进行参考哦,仅供参考。业务场景不同需求也不同

本文链接地址:https://www.jiuchutong.com/zhishi/284023.html 转载请保留说明!

上一篇:莱奇沃思州立公园,纽约 (© Jay O'Brien/Danita Delimont)(莱奇沃思田园城市)

下一篇:Windows7旗舰版系统极品飞车17已停止工作的解决方(win7旗舰系统)

  • 结转和结转到的区别
  • 收到备用金的会计分录怎么写
  • 企业购置房产进项被折旧怎么处理
  • 减免增值税款怎么算
  • 什么是长期股权结构
  • 合并报表中怎么抵消投资性房地产
  • 非盈利组织收到投资款如何做账
  • 自然人股权转让的纳税筹划
  • 预估应付账款该怎么冲销
  • 房地产公司产品无偿提供他人使用 税
  • 对税务机关的加强措施
  • 小规模纳税人如何开电子发票
  • 委托贷款业务涉嫌诈骗吗
  • 应付职工薪酬如何填列
  • 事业基金弥补收支差额是什么意思
  • 招待费的增值税专用发票可以抵扣吗
  • 缴纳土地出让金购买的土地是无形资产吗
  • 销项负数发票怎么冲减成本
  • 园林绿化公司购入剪刀怎么做会计分录
  • 个人所得税有哪几种
  • 协方差cov计算公式展开
  • 长期借款费用资本化
  • 未开票的销售要交增值税吗
  • 公司注销时存货计税依据
  • 凭证上附单据多少张怎么看
  • 4月发票能入1月吗
  • 吸收合并企业的情形
  • 预付账款如何计提折旧
  • 存货抵偿债务账务处理
  • 进项税额转出会计处理
  • ghost读不出硬盘
  • avcodec是什么意思
  • 预存500抵扣1000是几折活动?
  • php的in_array
  • 过路费进项税抵扣填在纳税申报的哪行
  • kb4598481是什么
  • 结算劳务外包的工作内容
  • 土地增值税清算扣除项目
  • 同一控制下企业合并会计准则
  • 人工智能课程心得体会
  • 电力安装公司需要什么资质证书
  • 南美貘叫什么
  • 目标检测现状
  • antv g6 node 嵌套
  • vports命令怎么用
  • php destruct
  • 游戏microsoft visual c++ runtime
  • 三方债权债务抵销
  • 高速费发票可以重开吗
  • 增值税小规模纳税人适用3%征收率
  • 增值税发票上多了一个点能刮掉吗
  • 购入已提足折旧的固定资产账务处理
  • 公司用印制度
  • 金税四期对纳税人的影响有哪些
  • 将自产产品用于管理部门 增值税
  • 以前年度损益调整是什么意思
  • 公司注销其他应付款法人借款
  • 代开发票预缴税款的比例是多少呢?
  • 其他应收款待抵扣税金
  • mysql数据查询语句
  • 政府禁用windows8
  • centos 安装方法
  • inc是什么软件
  • mac怎么连接打印机设备
  • linux开发经验指的什么
  • win8打开蓝牙设置
  • linux中vi编辑器怎么使用
  • 查找linux
  • linux系统解压tar.gz文件
  • 原生java web
  • math和maths哪个对
  • css截图
  • div与script
  • 化妆品的消费税税率是多少
  • 新都税务局咨询电话号码
  • 税务局发票邮寄需要多久
  • 国税增值税申报怎么记账凭证填写
  • 12366纳税服务热线存在的问题
  • 电子就业协议签了还是应届生
  • 建设工程合同纠纷属于专属管辖吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设