位置: 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旗舰系统)

  • 铁路12306学生资质查询在哪(铁路12306学生资质次数查询)

    铁路12306学生资质查询在哪(铁路12306学生资质次数查询)

  • 华为锁屏壁纸如何设置(华为锁屏壁纸如何更换)

    华为锁屏壁纸如何设置(华为锁屏壁纸如何更换)

  • i9 10900k配什么主板(i9 10900kf配什么主板)

    i9 10900k配什么主板(i9 10900kf配什么主板)

  • 操作系统作为接口连接的是(操作系统作为接口的特点)

    操作系统作为接口连接的是(操作系统作为接口的特点)

  • 注销手机号后绑定的东西怎么办(注销手机号后绑定的支付宝怎么办)

    注销手机号后绑定的东西怎么办(注销手机号后绑定的支付宝怎么办)

  • 华为gt健康三环表盘意义(华为gt2pro健康三环)

    华为gt健康三环表盘意义(华为gt2pro健康三环)

  • 小米系统内测有效期多久(小米miui内测)

    小米系统内测有效期多久(小米miui内测)

  • windows是计算机系统中的什么软件(windows是计算机高级语言吗)

    windows是计算机系统中的什么软件(windows是计算机高级语言吗)

  • qq自动回复算不算火花(qq自动回复算不算回复)

    qq自动回复算不算火花(qq自动回复算不算回复)

  • xr和11的钢化膜一样吗(苹果xr和苹果11的钢化膜)

    xr和11的钢化膜一样吗(苹果xr和苹果11的钢化膜)

  • 冯诺依曼五大功能部件(冯诺依曼的基本原理)

    冯诺依曼五大功能部件(冯诺依曼的基本原理)

  • 苹果11购买日期未验证什么意思(苹果11购买日期怎么查)

    苹果11购买日期未验证什么意思(苹果11购买日期怎么查)

  • ps笔刷效果怎么做(ps笔刷用法)

    ps笔刷效果怎么做(ps笔刷用法)

  • 苹果11有512G吗(iphone 11有没有512g的)

    苹果11有512G吗(iphone 11有没有512g的)

  • 海康威视硬盘不存在(海康威视硬盘不识别)

    海康威视硬盘不存在(海康威视硬盘不识别)

  • 滴滴没单子原地等吗(滴滴没单子的时候怎么办)

    滴滴没单子原地等吗(滴滴没单子的时候怎么办)

  • mbr gpt 区别(mbrgpt区别)

    mbr gpt 区别(mbrgpt区别)

  • oppoa3智能语音助手怎么打开(oppo a3语音助手)

    oppoa3智能语音助手怎么打开(oppo a3语音助手)

  • Redmi K20 Pro机身容量是多少(红米k20机身)

    Redmi K20 Pro机身容量是多少(红米k20机身)

  • 华为旅行助手怎么打开(华为手机的旅行助手有什么用)

    华为旅行助手怎么打开(华为手机的旅行助手有什么用)

  • arp是什么(cefsharp是什么)

    arp是什么(cefsharp是什么)

  • 360云盘停用照片怎么办(360云盘个人云盘停止服务怎么找回资料)

    360云盘停用照片怎么办(360云盘个人云盘停止服务怎么找回资料)

  • 651错误代码怎么解决?(651错误是怎么回事)

    651错误代码怎么解决?(651错误是怎么回事)

  • realjbox.exe - realjbox是什么进程 作用是什么

    realjbox.exe - realjbox是什么进程 作用是什么

  • 织梦后台直接添加会员功能开发方法(织梦怎么建站)

    织梦后台直接添加会员功能开发方法(织梦怎么建站)

  • 财务管理税后利息率计算公式
  • 医药行业发票税率
  • 公司组织旅游费用报个税吗
  • 弱电系统多少钱
  • 个体户自有厂房怎么申请
  • 手工账写错字怎么改呢
  • 餐饮店充值
  • 纳税义务未发生是什么意思
  • 余利宝怎样
  • 员工租房合同
  • 进口关税专用缴款书怎么做分录
  • 专票怎么提交不上去
  • 企业所得税汇算清缴申报表
  • 高新技术企业认定条件
  • 临时建筑进项税可以一次抵扣吗?
  • 文化事业建设费税收优惠政策2023
  • 长期股权投资年度损益影响金额包括什么
  • 二手车抵押银行贷款
  • 流动资产周转次数
  • 产假期间出现事故可以报工伤吗
  • 四级主任科员是什么级别待遇
  • mac 双系统如何调整系统空间
  • 腾讯管家游戏加速怎么开
  • 合同印花税会计分录
  • 旅游公司广告费支出扣除标准
  • 汇算清缴后补缴企业所得税账务处理
  • php获取网页视频地址
  • 工伤补贴由谁发放
  • 世界著名气泡酒公司
  • php对数组进行排序
  • php框架推荐
  • ChatGPT 逆天测试,结局出乎预料
  • 出口退税企业待遇怎么样
  • 餐饮发票归哪个部门管
  • 什么叫预缴款
  • 串口发送字节数据的数据格式是什么
  • 如何修改mysql
  • 收入成本怎么做账
  • 购买的烟酒怎么入账
  • 企业收到国债专项资金怎么记账
  • 数据库SQL中DML
  • 大数据sql教程
  • 接受捐赠如何进项
  • 金税四期有很多不实的传言
  • 报销发票哪些可以抵税
  • 收到服务费发票怎么做账
  • 股东撤资如何退还资金,用途写什么
  • 工资走公账有什么好处
  • 预缴增值税销售额是含税还是不含税的开票金额
  • 不签订购销合同的后果
  • 收到发票冲红怎么做分录
  • 报废周转材料应负担的成本差异
  • 过年给员工派红包合适吗
  • 资产减值损失属于费用类吗
  • 工资可以当月发放当月计提吗
  • 银行存款日记账与银行对账单之间的核对属于
  • 处置固定资产和报废固定资产区别
  • 购买汽车后,需要缴纳的税种有哪些
  • 平台使用费属于什么服务
  • solaris syslog
  • xp系统怎么进入系统
  • ubuntu系统怎么进入命令行
  • eve是什么文件
  • win8怎么设置定时关机
  • win10系统安装.net framework 3.5
  • winxp系统怎么设置开机密码
  • ubuntu如何安装wps
  • win7系统的桌面图标怎么调出来
  • windows.prompt用法
  • loading and loading
  • unity udim
  • 环境变量windows
  • 批处理命令大全及用法
  • js 选择语句
  • 用python写个脚本
  • 标箭头的手机软件
  • 税控盘开票资料怎么导出几年前的开票信息
  • 我国土地资源总量丰富人均不足
  • 地税局社保宣传标语
  • 2020年南通居民医保缴费标准
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设