vue 实现 tree 树形大量数据的多功能虚拟滚动-Virtual Tree

目录

卡顿假死

预研

开发

业务中使用

组件中引入

功能列表

使用


2022-08-18 兼容性更新

发现不少同学在使用过程中未安装babel插件导致jsx无法解析的问题,基于上述原因,现在移除了babel插件,已升级到v1.0.9版本,不会出现类似如下报错

(图片来自某位同学的报错截图)

向前兼容旧版本。


 

由于业务开发过程中有树形数据,因此需要用到tree树形组件,鉴于项目是基于vue的,前期的ui组件库选型就是element-ui,于是采用了el-tree组件。但在实际使用过程中出现了几个意外。


卡顿假死

server端返回全部数据时,渲染全量的tree组件时前端直接卡死,排查发现业务数据大部分子节点的量级在万以上。页面卡死这种事是要直接“掉脑袋”的,马上换成懒加载模式。

改成懒加载模式后,前两层节点的渲染和展开明显改善,用户体验也正常了,但是逐层点开测试时,发现还是存在问题,第三层有些节点超过2万节点,点击渲染仍然没有解决问题,查了下element-ui的issue,发现有不少人存在这个问题,且element-ui维护者尚未解决此问题,只能自己解决这个问题了。


预研

首先搜集了下github上现有的虚拟滚动tree组件,发现大部分都没有提供完善的功能,如checkbox、懒加载、节点过滤、节点拖拽等功能。基于业务开发角度,element-ui的功能是比较齐全的,因此想法是基于el-tree融合虚拟滚动vue-virtual-scroller(github上最多星的虚拟滚动组件)开发一个多功能虚拟滚动tree组件。


开发

将el-tree的相关scss样式文件和js文件从element-ui包中抽取出来,重新组合后形成无虚拟滚动功能的完整tree组件。

vue-virtual-scroller需要设置virtual-scrol

评论 63
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值