【性能优化】虚拟懒加载(下拉滚动加载长列表)element-puls+el-table

这篇具有很好参考价值的文章主要介绍了【性能优化】虚拟懒加载(下拉滚动加载长列表)element-puls+el-table。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

提示:这里可以添加本文要记录的大概内容:

在element-plus中,如果数据超过1k,就会感觉到明显的卡顿,应该是渲染的卡顿吧。反正我在请求回来接口之后,loading,会卡顿。用户体验十分不佳。然后吧,这个列表还不能分页,得全部展示出来,因为设计的,不能改,上面要求。。。
好吧,现在开始优化~

(一定要说一句,我们项目的分页一般都是前端做的分页,感觉体验十分不佳,为什么就不好好的后端分页尼,因为说不过)


提示:以下是本篇文章正文内容,下面案例可供参考

一、卡顿的原因?

请求接口返回之后,关闭loading,但是界面并没有及时的关闭,这个问题,应该是有什么阻塞了,开始定位,发现,应该是界面中的一个长列表没有进行懒加载优化,导致渲染DOM,花费了太长的时间。然后kakaka

二、解决

1、滚动懒加载

代码如下(示例):

<el-table
  id="lazyLoad"
  :data="showDataL"
  :max-height="temp_len_l">
  ...
</el-table>

/**
 * @desc table懒加载
 */
const lazyLoading = () => {
  // 这个地方就是为了得到滚动的那个元素,大家随意
  let dom = document.getElementById("lazyLoad");
  let scrollDOM = dom.querySelector(".el-scrollbar__wrap");
  
  scrollDOM.addEventListener("scroll", (v) => {
    const scrollDistance = scrollDOM.scrollHeight - scrollDOM.scrollTop - scrollDOM.clientHeight;
    if (scrollDistance <= 1) {
      if (pagination.page < pagination.totalPage) {//当前页数小于总页数就重新设置table的数据
        pagination.page++; //当前页数自增
        console.log(
          "页面已经到达底部,可以重新设置table数据,现在是加载第 " + pagination.page +" 页数据"
        );
        showDataL.value = dataL.value.slice(0, pagination.page * 20)
      }
    }
  });
};

onMounted(() => {
  lazyLoading();
});

2.官方

官方有一个虚拟表格,目前孩子啊测试阶段,大家也可以尝试一下,我就不贴出来了
点击进入


总结

提示:这里对文章进行总结:

长列表性能优化,主打一个减少DOM元素的一次性渲染加载文章来源地址https://www.toymoban.com/news/detail-732825.html

到了这里,关于【性能优化】虚拟懒加载(下拉滚动加载长列表)element-puls+el-table的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • element-ui select下拉框滚动加载更多

    当下拉框数据过多时,加载会非常慢,所以使用分页去显示,通过监听滚动事件来达到分页效果。 我是使用Vue自定义指令来做的。 一、首先在src下创建一个js文件,完成自定义指令的编写 有没有大神告诉我,自定义指令为啥在同一个页面不能使用多次? 二、在main.js中引入进来

    2024年02月16日
    浏览(36)
  • vue+element-ui 实现下拉框滚动加载

    该功能是由 自定义滚动指令 结合下拉框 :remote-method 远程搜索 实现的 开启远程搜索 参考官方文档 绑定自定义指令 v-el-select-loadmore=“loadmore”

    2024年02月14日
    浏览(46)
  • python+selenium下拉列表,滚动条操作失效时,用键盘向下键代替

    我们项目的页面有一个下拉列表,但不是select类型,无法通过封装称Select来操作。看了很多文章都写通过js代码driver.execute_script(\\\"window.scrollTo(0,10000)\\\")可以实现滚动,但我怎么试都不行,就选择换一种思路,通过键盘向下键来代替鼠标滚动 我们项目的下拉列表是ul类型,列表中

    2024年02月08日
    浏览(33)
  • 小程序列表下拉刷新和加载更多

    在小程序的app.json中,检查window项目中是否已经加入了\\\"enablePullDownRefresh\\\": true,这个用来开启下拉刷新 直接引入weui 上方两个查询条件和一个按钮,下方显示列表 data中定义几个参数,分别对应请求参数和返回结果。 定义一个公共的请求方法,用来调用接口,加载更多、下来刷

    2024年02月20日
    浏览(35)
  • react18虚拟滚动列表

    不依赖第三方,借用react18api和原生JS实现一个虚拟滚动列表,如果你的项目比较小,又不想引入第三方的框架,可以拿去用; style样式 核心HTML 逻辑代码

    2024年02月19日
    浏览(27)
  • uniapp-微信小程序实现swiper左右滚动切换tab,上下滚动加载列表

    思路:左右滑动使用swiper,上下滑动用scroll-view,swiper改变时同时改变tab并更新列表 坑点: 1. swiper高度问题,导致滑动不到最底部和最顶部         需要手动计算,减去顶部高度和底部tabbar,并且需要同时设置padding-top和paddin-botton,否则列表显示不完整 2. 由于最开始的代码

    2024年02月04日
    浏览(41)
  • vue3+element-plus 通过v-infinite实现下拉滚动无限加载

    v-infinite官网 v-infinite-scroll无限滚动组件使用详解  官网给到的基础案例: 自己写了一个简单的demo: 当使用v-infinite时,控制台会报错:  原因: 官方上的Issues解释是需要nextTick()之后再去显示 解决方法是组件挂载完成再去显示el-select组件 所以在上面demo中select组件加了v-if,

    2024年02月09日
    浏览(38)
  • vue3+elementUI-plus实现select下拉框的虚拟滚动

    网上查了几个方案,要不就是不兼容,要不就是不支持vue3, 最终找到一个合适的,并且已上线使用,需要修改一下样式: 代码如下: main.js里引用 vue文件: js代码: css代码:

    2024年02月13日
    浏览(33)
  • 前端列表页+element-puls实现列表数据弹窗功能

    效果图:  这是一个修改的弹窗,我们要实现的功能是,在列表,点击修改按钮时,将数据带入到弹窗里面,点击保存时关闭弹窗。 1,点击修改展开弹窗  使用 eldialog组件,v-model绑定的值为true时,打开弹窗,组件里我放的时自己写的组件,用来做数据的展示,这里我们将可

    2024年02月06日
    浏览(42)
  • Vue 3 + Element UI Plus 实现 Select 下拉框的虚拟滚动效果详解与代码示例

    在 Vue 3 项目中,当下拉框中的选项过多时,使用虚拟滚动可以提升性能和用户体验。本文将介绍如何使用 Vue 3 和 Element UI Plus(el-select-plus)组件实现 Select 下拉框的虚拟滚动效果,并提供详细的代码示例。 首先,确保你已经安装了 Element UI Plus,它是 Element UI 的扩展版本,支

    2024年02月08日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包