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

  • excel怎么删除空白多余格子(excel怎么删除空白格而不删除整行)

    excel怎么删除空白多余格子(excel怎么删除空白格而不删除整行)

  • 安装etc显示订单不存在

    安装etc显示订单不存在

  • 神舟战神z7和z7m区别(神舟战神z7和z7m键盘有什么区别)

    神舟战神z7和z7m区别(神舟战神z7和z7m键盘有什么区别)

  • 钉钉内部群怎么加外部人员(钉钉内部群怎么改成普通群)

    钉钉内部群怎么加外部人员(钉钉内部群怎么改成普通群)

  • cpu的h是什么意思(cpu后缀字母h)

    cpu的h是什么意思(cpu后缀字母h)

  • Word标准色蓝色怎么设置(word标准色蓝色黑体)

    Word标准色蓝色怎么设置(word标准色蓝色黑体)

  • 电脑无法唤醒(电脑无法唤醒只能重启)

    电脑无法唤醒(电脑无法唤醒只能重启)

  • 无氟空调用什么制冷(无氟空调什么时候出的)

    无氟空调用什么制冷(无氟空调什么时候出的)

  • iPhone7多长(苹果7q多长)

    iPhone7多长(苹果7q多长)

  • 剪映可以去掉原视频水印吗(剪映可以去掉原视频声音吗)

    剪映可以去掉原视频水印吗(剪映可以去掉原视频声音吗)

  • 参与拼单和发起拼单有什么区别(发起拼单 参与拼单)

    参与拼单和发起拼单有什么区别(发起拼单 参与拼单)

  • 手机按压屏幕哒哒响(手机屏幕按压咯吱响)

    手机按压屏幕哒哒响(手机屏幕按压咯吱响)

  • 浮屏是什么(浮屏是啥)

    浮屏是什么(浮屏是啥)

  • 京东淘客叫什么(京东淘宝客叫什么)

    京东淘客叫什么(京东淘宝客叫什么)

  • iwatch能打电话吗(蜂窝版iwatch能打电话吗)

    iwatch能打电话吗(蜂窝版iwatch能打电话吗)

  • 手机显示安全模式怎么回事(手机显示安全模式怎么办解除)

    手机显示安全模式怎么回事(手机显示安全模式怎么办解除)

  • 手机文件管理删除的图片怎么恢复(手机文件管理删除的照片还能恢复吗)

    手机文件管理删除的图片怎么恢复(手机文件管理删除的照片还能恢复吗)

  • 服务器是什么(服务器是什么意思)

    服务器是什么(服务器是什么意思)

  • mate20怎么关闭后台程序(华为mate20怎么关)

    mate20怎么关闭后台程序(华为mate20怎么关)

  • 唯品会账号可以多人登录吗(唯品会账号可以注销吗)

    唯品会账号可以多人登录吗(唯品会账号可以注销吗)

  • 8p是多少寸屏幕(iphone 8p是多少寸)

    8p是多少寸屏幕(iphone 8p是多少寸)

  • 闪充和数据线有关吗(闪充数据线有芯片吗)

    闪充和数据线有关吗(闪充数据线有芯片吗)

  • vivox27pro支持无线充电吗(vivox27支持无线充电吗)

    vivox27pro支持无线充电吗(vivox27支持无线充电吗)

  • 华为nova4锁屏不显示微信消息(华为nova4e怎么锁定屏幕)

    华为nova4锁屏不显示微信消息(华为nova4e怎么锁定屏幕)

  • 闲鱼留言怎么删除(闲鱼的留言如何删除)

    闲鱼留言怎么删除(闲鱼的留言如何删除)

  • 如何在Windows10中自动切换到最强WiFi(如何在Windows10中打开命令提示符?)

    如何在Windows10中自动切换到最强WiFi(如何在Windows10中打开命令提示符?)

  • 税收国家和地方的比例
  • 进项3个点销项13个点,增值税
  • 中兴通技术维护费
  • 建筑业工人工资保障
  • 房地产公司环境
  • 资产重组账务处理 会计视野
  • 工会经费计提多少后不再提
  • 开立基本账户所需资料
  • 负数发票跨月怎么重开
  • 私募过来的资金怎么做会计分录?
  • 不征税收入和免税收入有什么区别
  • 劳务公司购买材料怎么做账
  • 应交增值税已交税金的账务处理
  • 营改增后租金收入交什么税
  • 增值税电子发票怎么下载
  • 一般纳税人开培训发票税率是多少
  • 五证一户什么意思
  • 买二手面包注意事项
  • 年数总和折旧计算方法
  • 小规模纳税人贷款利息收入增值税税率
  • 预付专利转让费计入什么科目?
  • 做进项转出的票据有哪些
  • 企业报表里面利润怎么填
  • 一般企业利润表格式
  • 资产损失税前扣除
  • 给员工租房会承担什么责任
  • word文档打印时不打印批注
  • 绝地求生未来之役手游下载
  • 来电转接怎么设置空号
  • win10专业版怎样连接wifi
  • PHP:pg_connection_busy()的用法_PostgreSQL函数
  • fs209e是什么意思
  • 将债务转为资本的,债务人应当将债权人
  • 以前年度损益调整结转到本年利润吗
  • 异地银行结算账户的特点
  • 企业租赁房屋怎么开票
  • collection的属性
  • php curl设置cookie
  • 主营业务成本和生产成本的区别
  • 个人所得税专项附加扣除标准一览表
  • 织梦论坛
  • dede织梦怎么转成zblog
  • 代扣代缴增值税附加税减免政策
  • 三方协议的
  • 二房东开票需要哪些资料
  • 个体户需要
  • 企业应缴纳税款
  • 购买固定资产用什么凭证
  • 企业租车接送员工上下班
  • 预付卡充值可以退吗
  • 工业企业外购存货成本有
  • 应收票据的计价应按
  • 发放外单位人员劳务费需要在发放表上签字吗
  • 城镇土地使用税征收范围
  • 明细分类核算的依据是什么
  • 上个月成本算少了怎么办
  • 工程施工和工程造价哪个好
  • 什么是合理的工作安排
  • sql报无效字符
  • 操作系统中的三级调度
  • 盗版win10系统
  • mse windows defender
  • 微软推出copilotpro订阅
  • win8调分辨率
  • Ubuntu Server 13.10 安装配置图解教程
  • Windows命令行复制粘贴命令
  • linux的grep命令详解
  • xp电脑内存占用过高怎么办
  • linux zen3
  • scrfs.exe - scrfs是什么进程 有什么用
  • ireike.exe - ireike是什么进程 有什么作用
  • win8的开始菜单在哪里
  • dos批处理命令大全
  • nodejs怎么实现多线程
  • layout_gravity与gravity的区别
  • javascript怎么样
  • pytho命名规则
  • realm数据库连接
  • 甘肃省35条措施的内容是什么
  • 税务局实地核查内容
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设