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

  • QQ群推广的特点及常用方法(qq群推广文案范文)

    QQ群推广的特点及常用方法(qq群推广文案范文)

  • 华为nova9pro怎么显示流量(华为nova9pro怎么设置来电闪光灯)

    华为nova9pro怎么显示流量(华为nova9pro怎么设置来电闪光灯)

  • 荣耀60视频美颜功能在哪里开启(荣耀60视频美颜怎么开)

    荣耀60视频美颜功能在哪里开启(荣耀60视频美颜怎么开)

  • 荣耀hjc-lx9是什么型号(honor型号hjc_lx9)

    荣耀hjc-lx9是什么型号(honor型号hjc_lx9)

  • 华为nova7pro如何开空调(华为nova7pro如何隐藏app)

    华为nova7pro如何开空调(华为nova7pro如何隐藏app)

  • ios13可以分屏吗(苹果13可以分屏操作吗)

    ios13可以分屏吗(苹果13可以分屏操作吗)

  • 手机卡可以网上注销吗(手机卡可以网上补办吗)

    手机卡可以网上注销吗(手机卡可以网上补办吗)

  • 荣耀v30pro屏幕素质(荣耀V30PRO屏幕素质)

    荣耀v30pro屏幕素质(荣耀V30PRO屏幕素质)

  • 快手商品可以合并订单发货吗(快手商品可以合并付款吗)

    快手商品可以合并订单发货吗(快手商品可以合并付款吗)

  • 电脑没有麦克风可以用耳机代替吗(电脑没有麦克风能说话吗)

    电脑没有麦克风可以用耳机代替吗(电脑没有麦克风能说话吗)

  • 华为畅聊电话什么意思(用华为畅聊打电话要电话费吗)

    华为畅聊电话什么意思(用华为畅聊打电话要电话费吗)

  • 为什么开不了情侣空间(为什么开不开)

    为什么开不了情侣空间(为什么开不开)

  • 怎么解除qq匹配频繁(qq匹配聊天怎么解封)

    怎么解除qq匹配频繁(qq匹配聊天怎么解封)

  • 快手等级是什么意思(快手等级划分)

    快手等级是什么意思(快手等级划分)

  • 淘宝淘工厂是什么(淘宝淘工厂什么日子有优惠)

    淘宝淘工厂是什么(淘宝淘工厂什么日子有优惠)

  • 电脑下划线符号怎么打(电脑下划线符号大全复制)

    电脑下划线符号怎么打(电脑下划线符号大全复制)

  • 华为gt2与荣耀magic2区别(华为gt2与荣耀watch2)

    华为gt2与荣耀magic2区别(华为gt2与荣耀watch2)

  • soul注销了还能恢复吗(soul注销了还能恢复原来账号吗)

    soul注销了还能恢复吗(soul注销了还能恢复原来账号吗)

  • oppoa73呼吸灯怎么开(oppoa73呼吸灯怎么设置)

    oppoa73呼吸灯怎么开(oppoa73呼吸灯怎么设置)

  • 一加7T Pro怎么关闭应用消息通知(一加7pro手机怎么关闭volte功能)

    一加7T Pro怎么关闭应用消息通知(一加7pro手机怎么关闭volte功能)

  • soul怎么和好友开视频(soul怎么和好友玩猜拳)

    soul怎么和好友开视频(soul怎么和好友玩猜拳)

  • 维宏驱动怎么安装(维宏的驱动程序怎么安装不上)

    维宏驱动怎么安装(维宏的驱动程序怎么安装不上)

  • 手机微信老是白屏怎么回事(手机微信老是白屏怎么办)

    手机微信老是白屏怎么回事(手机微信老是白屏怎么办)

  • 美图秀秀怎么p字带拼音(美图秀秀怎么p掉多余的人)

    美图秀秀怎么p字带拼音(美图秀秀怎么p掉多余的人)

  • otg怎么传歌到u盘

    otg怎么传歌到u盘

  • 苹果手机可以设置来电视频吗(苹果手机可以设置通话录音吗)

    苹果手机可以设置来电视频吗(苹果手机可以设置通话录音吗)

  • 苹果7手机严重卡顿(苹果手机严重发热原因)

    苹果7手机严重卡顿(苹果手机严重发热原因)

  • 服务费收入是什么
  • 印花税不足1元需要缴纳吗
  • 应纳税额等于已缴税额
  • 过头税产生的根源
  • 税法规定的增值税
  • 公司购买汽车的折旧年限
  • 无偿使用厂房用交税吗
  • 承兑汇票区别
  • 几个月以前发现便血是肠癌吗
  • 应付债券转为实际债务
  • 科目汇总表会计核算形式
  • 房地产开发企业土地增值税清算
  • 产品售后维修产品介绍
  • 合并报表时抵消内部交易包含的未实现损益的影响有哪些
  • 当月抵扣的发票可以下个月记账吗
  • 全体员工出去旅游朋友圈怎么发
  • 租客一次性支付一年租金需要交个税吗
  • 个体工商户每月不超过10万免税
  • 关联企业税收
  • 销售成本结转账务处理
  • 小规模差额征税季度不超过30万的税收优惠
  • 购置土地税款怎么入账?
  • 苹果电脑macos big sur
  • 电脑搜索功能不准确
  • 怎样获得win11
  • linux模块的概念
  • 交易性金融资产公允价值变动怎么算
  • php 字符串函数
  • 产供销一体化什么意思
  • 公司搞活动买的车能买吗
  • 表格uplook
  • 工商年报的社保缴费基数怎么算
  • 退回以前年度多交的附加税怎么做分录
  • 符合资本化的研发支出不影响利润总额吗
  • 手续费及佣金收入会计分录
  • 如何判断公众号是否可靠
  • 发放工资时扣除的保险怎么做
  • 工业总产值和营业收入区别
  • 其他应付款贷方余额表示谁欠谁
  • 金融企业会计科目有哪些
  • 行政事业单位支出劳务费规定
  • 无票收入后又开票怎么办
  • 工程材料发票备注要求
  • 管理费用的是
  • 个体户没有税务登记怎么开发票
  • 结构性存款是什么意思是理财
  • 有限公司股权转让需要股东会决议吗
  • 中小企业会计科目
  • 国家知识产权专利网
  • 购买理财产品现金流量表
  • 收到货款确认收入还是开好发票确认收入
  • 发行长期债券计入什么科目
  • 在分公司签的合同能转到总公司吗?
  • 计提风险准备金是什么意思
  • 租赁车子
  • 代理记账企业如何通过互联网创新发展
  • 新公司初始建账
  • macbook air语音功能
  • 微软招聘流程
  • Win7 64位系统声卡重装过程中出现失败的解决方法
  • win10系统添加语言
  • 操作系统安装日期查看
  • linux内核驱动开发书籍
  • linux-swap
  • linux ftp服务端
  • linux命令行图片
  • windows8安装步骤
  • win10移动版应用商店打不开
  • 在linux系统中,用来存在系统所需
  • linux用ssh登录不进去
  • nodejs 程序 打包服务端
  • 仿百度首页
  • js折叠展开特效
  • JavaScript中的事件处理
  • 济宁市税务局官网名称
  • 营业税发票丢失能否开增值税普票
  • 小规模纳税人开专票需要交税吗
  • 粤商通个体户怎样注册
  • 开增值税发票没有销售合同也要交印花税吗
  • 律师费不给了会怎么办
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设