右侧内容数据量多时,el-menu侧边栏收缩/展开卡顿问题(模板vue-element-template)

1,894 阅读1分钟

问题

项目中使用的是vue-element-template 当右侧content内容比较多时,或者表格单页数据量展示较多时,左边侧边栏菜单收缩展开的功能就会很卡顿,体验十分差,看了issue有人提出bug,但是也没有人给出一个比较好的解决方案。 在这里插入图片描述

分析问题

本人遇到的是表格单页展示过多引起的菜单收缩卡顿,分析了一下原因是,js执行阻塞了css动画,el-table开启了自动撑开宽度,需要时间重新计算渲染(设置了min-width的或开启fit) 在这里插入图片描述

解决方案:

  1. 使用虚拟滚动方案,目前el-table是没有该功能的,可以使用第三方改造的table
  2. 去除收缩动画,不过有点生硬。。注释掉src/style/sidebar.scss文件下的 transition: margin-left .28s;transition: width 0.28s; 俩行代码。
  3. 数据延迟重新渲染,等动画完成后重新渲染 我发现src/style/sidebar.scss样式.main-container下的transition: margin-left .28s较卡,把它注释掉。接下来就是对tableData进行切割延迟重新渲染(只针对右侧是表格的情况下的解决方案,其他情况也可以用类似的方法)

至此,问题解决,本人用的是方法3,虽然方法low,但是起码能用哈哈哈...

各位大佬,如有更好的解决方案,请踢我一脚