首页 > 其他分享 >el-select数据太多造成页面卡顿?el-select实现触底加载

el-select数据太多造成页面卡顿?el-select实现触底加载

时间:2023-05-05 14:46:54浏览次数:39  
标签:el num select AllOptions 100 options 卡顿

当我们使用el-select下拉框的时候,会遇到后端放回的数据太过庞大(成千上万条),导致页面渲染的时候造成卡顿现象。这时候我们可以利用触底加载方法减少资源的消耗,避免页面卡顿。

思路:这时候我们可以利用vue的自定义指令,监听到他的下拉滚动事件,当滚动到最后时,(下拉宽高度+可滑动高度距离底部的距离 > 可滑动高度)把数组变大就行了

1、我这里用的是局部注册

directives: {
    loadmore: {
      inserted(el, binding) {
        const dom = el.querySelector(
          ".el-select-dropdown .el-select-dropdown__wrap"
        );
        dom.addEventListener("scroll",function(e){
          const condition =
            this.scrollHeight - this.scrollTop <= this.clientHeight;
          if (condition) {
            binding.value();
          }
        });
      },
    },
  }

2、使用方法

<el-select
               v-model="a"
                placeholder="请选择或搜索"
                clearable
                filterable
                value-key="id"
                :filter-method="filterMethod"
                @clear="clearMethod"
                v-loadmore="loadmore"
              >
                <el-option
                  v-for="item in options"
                  :key="item.id"
                  :label="item.name"
                  :value="item.id"
                >
                </el-option>
</el-select>
export default{
  data(){
    return {
      AllOptions:[],//全部数据
      options:[],//取部分数据
      a:"",
      num:1
    }
  }
  methods:{
     /**触底后的方法*/
      loadmore(){                  //例如下拉框滚动触底后,将全部的数据使用slice切割数组,我这里是每次增加100条         this.num++            this.options= (this.AllOptions|| []).slice(0, this.num * 100)       },       /**这个是搜索方法(你可以忽略) */       filterMethod(query){           if(query){             this.options= this.AllOptions.filter(i=>{               return i.name.includes(query)             })           }else{             this.options= (this.AllOptions|| []).slice(0,this.num * 100)           }         },               clearMethod(){         //我清除后默认前100条           this.options= (this.AllOptions|| []).slice(0,100)         }
  }
}

如果你觉得对你有帮助,请点个赞支持一下谢谢!!!

 

标签:el,num,select,AllOptions,100,options,卡顿
From: https://www.cnblogs.com/jzm2842688813/p/17374087.html

相关文章

  • pipeline 多个代码库到不同目录
    pipeline{agentanystages{stage('CloneRepository1'){steps{dir('repo1'){gitbranch:'main',url:'https://github.com/example/repo1.git'......
  • 通过map+Function优化if else
    需求背景在实际项目中,好比在一个简单的订单处理系统,其中订单有不同的状态(比如新建、已支付、已发货、已收货等),为了实现基于状态机的逻辑处理,我们可以通过switch(状态)去对应不同状态的处理逻辑。1publicStringprocess2(){2switch(status){3c......
  • 直播平台制作,vue el-dropdown下拉框单选有对钩高亮
    直播平台制作,vueel-dropdown下拉框单选有对钩高亮 <template> <div>  <divclass="selected"></div>  <el-dropdown   style="    cursor:pointer;    font-weight:500;    font-size:16px;    line-height:1;  ......
  • powershell创建软连接 通过OneDrive同步文件
    放置在OneDrive文件夹中的文件只能通过Windows系统访问,即便是此文件保存在本机硬盘中。通过创建软连接的方式,既可以保证访问兼容性,也可以享受到OneDrive同步功能。OneDrive会把软连接视为源文件。创建软连接需要管理员权限。New-Item-ItemTypeSymbolicLink-Path[链接要放置......
  • SpringBoot中策略模式+工厂模式业务实例(接口传参-枚举类查询策略映射关系-执行不同策
    场景设计模式-策略模式在Java中的使用示例:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/127622238上面讲了策略模式在Java中的使用示例。下面看一个在SpringBoot中的实际使用示例。业务场景:有多个煤矿,信号灯有多个厂家/规则,每个煤矿对应一种信号灯。需要编......
  • jexcel_将excel数据导入到页面
    jexcel_将excel数据导入到页面    还需解决的课题:下载jszip.js和xlsx.js<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="有效代码_将excel数据导入到网页.aspx.cs"Inherits="Default2"%><!DOCTYPEhtml><htmlxmlns="......
  • Android studio Failed to start [powershell.exe]
    无法打开本地终端解决办法:1、在file→settings→Tools→Terminal→Shellpath中把值设置为电脑系统 powershell.exe文件的全路径(如下图)  ......
  • 下载文件(Excel)功能,后端返回blob字节流,前端怎么处理?
    在做大屏数据项目有个报表下载的功能,根据用户选择的时间下载对应时间的报表,后端返回的是文件流,前端需要怎么去处理呢?实现的功能效果: 后端返回的数据:需要我们处理的乱码:前端代码:1exportExcel(){2axios({3methods:"xxxx",4url:"xxx/xxxx/xx......
  • 基于SqlSugar的开发框架循序渐进介绍(29)-- 快速构建系统参数管理界面-Vue3+ElementPlus
    在随笔《基于SqlSugar的开发框架循序渐进介绍(28)--快速构建系统参数管理界面》中介绍了基于SqlSugar开发框架,构建系统参数管理的后端API部分,以及WInform界面部分内容,本篇随笔介绍基于Vue3+ElementPlus的前端界面开发过程。1、Winform端界面的回顾系统参数的信息,设计为包含一个大......
  • 编译器优化选项和debug,release模式的区别(转)
    原文:https://blog.csdn.net/qq_41854911/article/details/129657879有时候,程序在Debug模式下运行的好好的,一Release就crash了。有时候,程序在Debug模式下崩溃了,Release模式下居然能正常运行。以上这种情况,可能很多人都遇到过。用C/C++的朋友都知道编译器编译有各种优化级别,编译......