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

  • 微信怎么换铃声(手机微信怎么换铃声)

    微信怎么换铃声(手机微信怎么换铃声)

  • 菜鸟裹裹怎么加密给别人买的东西(菜鸟裹裹怎么加盟)

    菜鸟裹裹怎么加密给别人买的东西(菜鸟裹裹怎么加盟)

  • 钉钉开悬浮窗会记录时长吗(钉钉开悬浮窗会不会被发现)

    钉钉开悬浮窗会记录时长吗(钉钉开悬浮窗会不会被发现)

  • 小米8支持人脸支付吗(小米支持人脸支付吗)

    小米8支持人脸支付吗(小米支持人脸支付吗)

  • 剪映怎么局部打马赛克(剪映怎么局部打马赛克遮挡)

    剪映怎么局部打马赛克(剪映怎么局部打马赛克遮挡)

  • 电脑屏幕变小了 两边出现黑屏(电脑屏幕变小了 左边出现黑屏怎么办)

    电脑屏幕变小了 两边出现黑屏(电脑屏幕变小了 左边出现黑屏怎么办)

  • 闲鱼怎么换东西(闲鱼怎么换东西发货)

    闲鱼怎么换东西(闲鱼怎么换东西发货)

  • 微信实名认证需要上传身份证照片吗(微信实名认证需要人脸识别吗)

    微信实名认证需要上传身份证照片吗(微信实名认证需要人脸识别吗)

  • 华为gratl00支持电信吗(华为gra-tl00参数)

    华为gratl00支持电信吗(华为gra-tl00参数)

  • 华为手机刷机后定位还能用吗(华为手机刷机后怎么绕过华为账号)

    华为手机刷机后定位还能用吗(华为手机刷机后怎么绕过华为账号)

  • 抖音显示超级乐迷是什么意思(抖音显示超级乐队怎么办)

    抖音显示超级乐迷是什么意思(抖音显示超级乐队怎么办)

  • 开过情侣空间有记录吗(开过情侣空间有什么好处)

    开过情侣空间有记录吗(开过情侣空间有什么好处)

  • 退出word应用程序的快捷键是(退出word应用程序窗口有几种)

    退出word应用程序的快捷键是(退出word应用程序窗口有几种)

  • 固态硬盘什么时候上市的(固态硬盘什么时候开始普及的)

    固态硬盘什么时候上市的(固态硬盘什么时候开始普及的)

  • 手机杂志不更新怎么办(手机杂志app)

    手机杂志不更新怎么办(手机杂志app)

  • breeon怎么取消(breero怎么关闭)

    breeon怎么取消(breero怎么关闭)

  • vivox27pro防水不(vivo x27防水)

    vivox27pro防水不(vivo x27防水)

  • 目前web安全主要分为(目前web安全主要分为以下哪几个方面)

    目前web安全主要分为(目前web安全主要分为以下哪几个方面)

  • 苹果xr是苹果9吗(苹果xr是苹果手机吗)

    苹果xr是苹果9吗(苹果xr是苹果手机吗)

  • word中版式选项卡在哪里(word中版式设计在哪)

    word中版式选项卡在哪里(word中版式设计在哪)

  • 荣耀ksa一al00是什么型号(华为荣耀ksa-al10是什么型号)

    荣耀ksa一al00是什么型号(华为荣耀ksa-al10是什么型号)

  • 微信运动需要联网吗(微信运动联通卡步数准确吗)

    微信运动需要联网吗(微信运动联通卡步数准确吗)

  • 网页版钉钉打字如何换行(电脑版钉钉怎么打字)

    网页版钉钉打字如何换行(电脑版钉钉怎么打字)

  • 卡特迈国家公园里的棕熊,阿拉斯加州 (© imageBROKER/SuperStock)(卡特迈国家公园地图)

    卡特迈国家公园里的棕熊,阿拉斯加州 (© imageBROKER/SuperStock)(卡特迈国家公园地图)

  • 【JavaWeb】HTML零基础入门(java htmlparser)

    【JavaWeb】HTML零基础入门(java htmlparser)

  • 房地产零税率
  • 税务师职业考试
  • 个人所得税查询工资与实际工资不符是为何
  • 有形动产租赁服务税收分类编码
  • 固定资产累计折旧会计科目
  • 普通发票的税率1%
  • 汇算清缴纳税调整项目
  • 墨盒应该怎么买
  • 兼营行为的税务处理办法
  • 补入库存商品的会计分录
  • 通过无偿取得的成果
  • 代收房款
  • 筹资活动现金净流量为正说明什么
  • 增值税税率零税率
  • 增值税普通发票和普通发票的区别怎么交税
  • 股东投入固定资产进来怎么做账
  • 环境资源的含义
  • 赠送的商品怎么入账
  • 固定成本与变动成本的区别
  • wd discovery怎么安装
  • 期初银行余额有误怎么调分录怎么写
  • 计提安全费用含税还是不含税
  • 发财树的养殖方法和浇水视频
  • 税务的基本职能
  • vue onblur
  • 纳税人提供应税服务
  • 印花税减半征收优惠政策2020
  • 买一赠一的会计处理与税务处理
  • php常用的魔术方法有哪些
  • node 卸载
  • js鼠标键盘事件
  • watch监听不到props数据改变
  • vue富文本编辑器移动端
  • thinkphp跨域
  • php读取文件内容的方法和函数
  • free命令看到的内存
  • vue环境搭建的几种方法
  • 应交税费中应交企业所得税为负数怎么调报表
  • 财政总预算会计的特点
  • 增值税最高开票限额
  • 土地使用权被政府收回没有注销怎么样缴土地使用税
  • 银行卡频繁小额转账
  • 企业进项税和销项税怎么抵扣
  • 水电费没有发票吗
  • 以前年度税费减免税
  • 残保金是第二年交前一年的吗
  • 纳税人未抄报税怎么办
  • 没收到发票也可以入账吗
  • 计提增值税如何做账
  • 单位内部食堂怎么举报
  • 内账税金如何做分录
  • 生产企业原材料占产成品的比例
  • 营业外支出的具体内容
  • 红字发票信息表在哪里查询
  • 采用现销方式销售商品的会计分录
  • sqlserver2008分页查询
  • win10 rs5
  • centos 进程查询
  • 在Linux系统中安装VS
  • win10系统怎么设置电脑密码
  • linux ftp 服务
  • 用diskgenius硬盘格式转换怎么使用
  • win8系统如何恢复出厂设置
  • win7如何压缩图片
  • 你所知道的三维建模软件有哪些?
  • 我的自定义计划怎么删除
  • python字符串常用的五种方法
  • shell脚本实现监控进程
  • 使用GeoPainter一步一步布置场景
  • jquery瀑布流代码
  • 友盟模块
  • jquery基础知识梳理
  • 建筑单位外地缴税
  • 税务总局和税务局区别
  • 香港居民个人转让境内股权所得个人所得税税率
  • 车船税是比例还是定额
  • 以划拨方式取得土地使用权的,转让房地产时
  • 2020税控盘升级后怎么使用
  • 郑州房产交契税在哪里交
  • 中国民营经济十大新闻人物
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设