iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Element中select多数据加载优化的实现
  • 158
分享到

Element中select多数据加载优化的实现

2024-04-02 19:04:59 158人浏览 泡泡鱼
摘要

目录场景代码实现总结:场景 近期着手开发基于ElementUI的后台管理系统,偶然间发现「el-select」下拉选择时候遇到一个问题,当渲染下拉选项的「options」的数据量过

场景

近期着手开发基于ElementUI的后台管理系统,偶然间发现「el-select」下拉选择时候遇到一个问题,当渲染下拉选项的「options」的数据量过多时「本项目中的数据条目已过万」,就会出现下拉选择器卡顿的情况,尤其是在模糊匹配过滤的情况下,显得十分的卡顿。初始化选择器的时候,也会点击无反应,有时候需要点击多次才可出现「dialog」弹窗(本次下拉筛选在弹窗中实现)。 翻阅多篇博客笔记之后,最终找到一个可以解决问题的方案,现将此次优化方案记录成为笔记,以便于日后遇到类似问题的时候便于查阅。

注:基于select的下拉筛选,通过自定义事件来实现模糊搜索匹配。

一共两种方案:

  • 一是获取所有数据,通过输入的关键字自己对获取的数据进行过滤处理;
  • 二是通过输入的关键字来动态请求后台接口,通过接口返回的数据来动态渲染下拉选项;

代码实现

Vue组件实例


<template>
  <div class="app">
    <el-dialog title="标题" :visible.sync="relatedOpen" :append-to-body="true" width="500px">
      <el-row :gutter="16">
        <el-col :span="20">
          <el-select
            v-model="value"
            filterable
            clearable
            style="width:100%"
            placeholder="请选择"
            :loading="searchLoad"
            :filter-method="filterMethod"
            v-el-select-loadmore="loadMore(rangeNumber)"
            @visible-change="visibleChange"
          >
            <el-option v-for="item in options.slice(0, rangeNumber)" :key="item.key" :label="item.value" :value="item.key"></el-option>
          </el-select>
        </el-col>
        <el-col :span="4">
          <el-button type="primary" @click="submit">确定</el-button>
        </el-col>
      </el-row>
    </el-dialog>
  </div>
</template>
  • 「v-el-select-loadmore」为自定义指令封装的数据加载指令,是为了解决和优化elementUI下拉选择器加载数据过多出现卡顿问题的。
  • 「filter-method」是下拉选择器的一个自定义属性,可以监听输入的变量,从而依据变量来实现数据的动态获取;

  // 自定义指令
  directives: {
    "el-select-loadmore": (el, binding) => {
      // 获取element UI定义好的scroll元素
      const SELECTWRAP_ROM = el.querySelector(".el-select-dropdown .el-select-dropdown__wrap");
      if (SELECTWRAP_ROM) {
    // 添加scroll事件
        SELECTWRAP_ROM.addEventListener("scroll", function() {
      // 判断滚动
          const condition = this.scrollHeight - this.scrollTop <= this.clientHeight;
          condition && binding.value();
        });
      }
    }
  }

相应的数据函数


export default {
  data() {
    return {
      relatedOpen: false,
      options: [] ,
      courseList: [],
      rangeNumber: 10,
      searchLoad: false ,
      value: "",
      timer: null
    };
  },
  created() {
    this.getOptions();
  },
  methods: {
    // 按需加载
    loadMore(n) {
      return () => (this.rangeNumber += 5);
    },
    // 过滤课件
    filterMethod(query) {
      if (this.timer != null) clearTimeout(this.timer);
      !this.searchLoad && (this.searchLoad = true);
      this.timer = setTimeout(() => {
        this.options = !!query ? this.courseList.filter(el => el.value.toLowerCase().includes(query.toLowerCase())) : this.courseList;
        clearTimeout(this.timer);
        this.searchLoad = false;
        this.rangeNumber = 10;
        this.timer = null;
      }, 500);
    },
    // 监听select下拉框的显示和隐藏
    visibleChange(flag) {
      // 显示时初始化列表
      flag && this.filterMethod("");
      // 初始化默认值
      this.rangeNumber = 10;
    },
    // 获取选项
    async getOptions() {
      await searchCourseware().then(res => {
        let list = res.data || [];
        // 默认展示的数据
        this.options = list;
        // 原始数据
        this.courseList = list;
      });
    }
  }
}

注:

  • 定时器作用是防止输入筛选的关键字太过频繁,从而造成数据响应不及时;因为本次是一次性获取了全部的数据,所以这里只是用做渲染加载数据;
  • 选择器的事件函数主要是用来初始化“获取焦点”和“失去焦点”时处理默认展示数据用的,若是获取的网络请求,此处需要做“函数截流”处理;目的是减少接口请求次数。

总结:

换了新的工作环境,现开始着手做后台管理系统,或多或少会遇到各种各样的问题。一如即往,会在笔记中记录开发中遇到的问题。好记性不如烂笔头,希望现在埋下种子,等到来年秋天的时候会收获🍒果实。JY

到此这篇关于Element中select多数据加载优化的实现的文章就介绍到这了,更多相关Element select多数据加载内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Element中select多数据加载优化的实现

本文链接: https://www.lsjlt.com/news/136795.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Element中select多数据加载优化的实现
    目录场景代码实现总结:场景 近期着手开发基于ElementUI的后台管理系统,偶然间发现「el-select」下拉选择时候遇到一个问题,当渲染下拉选项的「options」的数据量过...
    99+
    2024-04-02
  • 在element-ui的select下拉框如何实现滚动加载
    这篇文章给大家分享的是有关在element-ui的select下拉框如何实现滚动加载的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。这里通过自定义封装vue指令进行封装。...
    99+
    2024-04-02
  • element select怎么实现组件虚拟滚动优化
    本篇内容介绍了“element select怎么实现组件虚拟滚动优化”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!不知道...
    99+
    2023-07-06
  • AngularJS中如何实现select加载数据选中默认值
    这篇文章给大家分享的是有关AngularJS中如何实现select加载数据选中默认值的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。问题描述:在我们开发项目过程中,避免不了会用到s...
    99+
    2024-04-02
  • Element中Select选择器的实现
    本篇是关于下拉框相关知识点总结 今天来整理一下目前最喜欢的el组件 el-select:Element官网 最近真的做梦都是这个组件的相关属性clearable和filterable...
    99+
    2024-04-02
  • 基于element-ui中el-select下拉框选项过多的优化方案
    目录element-ui中el-select下拉框选项过多一种优化思路我的做法element-ui中el-select下拉框数据过多,用pinyin-match实现拼音、首字母、汉字...
    99+
    2023-05-17
    element-ui el-select el-select下拉框选项过多 el-select下拉框选项
  • Java中的二维码和数组:如何实现优化加载?
    随着移动互联网的普及,二维码在我们的日常生活中扮演着越来越重要的角色。在Java中,我们可以使用一些库来生成和解码二维码,但是如果我们需要批量生成大量的二维码,或者需要在应用程序中频繁地加载和使用大量的数组数据,如何优化加载呢?本文将介绍...
    99+
    2023-08-09
    load 数组 二维码
  • Oracle数据加载速度的优化方法
    这篇文章主要介绍“Oracle数据加载速度的优化方法”,在日常操作中,相信很多人在Oracle数据加载速度的优化方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Oracle...
    99+
    2024-04-02
  • 如何解决el-select数据过多懒加载问题
    这篇文章主要介绍如何解决el-select数据过多懒加载问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!el-select数据过多处理方式在日常项目中el-select组件的使用频...
    99+
    2024-04-02
  • JPA 懒加载与预加载的奥秘,优化你的数据查询
    ...
    99+
    2024-04-02
  • elementui的select实现多选添加功能
    select组件 <el-col :span="12"> <el-form-item label="成员" prop="person">...
    99+
    2023-03-22
    elementui的select多选添加 elementui的select多选
  • PyTorch加载数据集梯度下降优化
    目录一、实现过程1、准备数据2、设计模型3、构造损失函数和优化器4、训练过程5、结果展示二、参考文献一、实现过程 1、准备数据 与PyTorch实现多维度特征输入的逻辑回归的方法不同...
    99+
    2024-04-02
  • element 穿梭框性能优化的实现
    目录背景解决思路新问题进阶背景 穿梭框处理大数据量时,由于渲染的 DOM 节点过多,造成页面卡顿的问题。 在尽量不改变组件原有逻辑的前提下,进行优化。 解决思路 懒加载 - I...
    99+
    2024-04-02
  • Java中大数据对象加载的优化策略有哪些?
    Java是一种广泛使用的编程语言,它在处理大数据对象时非常有用。但是,如果不进行适当的优化,这些大数据对象的加载和处理可能会导致性能下降。因此,在本文中,我们将讨论Java中大数据对象加载的优化策略。 使用缓存 在处理大数据对象时,我们...
    99+
    2023-08-16
    大数据 对象 load
  • Vue中Element分组+多选+可搜索Select选择器怎么实现
    这篇文章主要为大家展示了“Vue中Element分组+多选+可搜索Select选择器怎么实现”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue中El...
    99+
    2024-04-02
  • vue2如何实现滚动条加载更多数据
    小编给大家分享一下vue2如何实现滚动条加载更多数据,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!解析:判断滚动条到底部,需要用...
    99+
    2024-04-02
  • vue怎么实现滚动条加载更多数据
    这篇“vue怎么实现滚动条加载更多数据”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue怎么实现滚动条加载更多数据”文章吧...
    99+
    2023-07-04
  • GO 语言中如何优雅地实现大数据的接口加载?
    随着大数据时代的到来,越来越多的企业开始关注数据的价值,而数据的处理和分析需要依托于高效的接口加载。GO 语言是一种高效的编程语言,而且它在网络编程方面也有着很高的性能表现。在这篇文章中,我们将探讨如何利用 GO 语言优雅地实现大数据的接...
    99+
    2023-06-17
    接口 load 大数据
  • uni-app实现数据上拉加载更多功能实例
    目录实现上拉加载更多优化:通过节流阀防止发起额外的请求  判断数据是否加载完毕总结实现上拉加载更多 打开项目根目录中的 pages.json 配置文件,为 sub...
    99+
    2022-11-13
    uniapp实现上拉加载更多 uniapp下拉加载更多 uniapp 上拉加载
  • Oracle数据加载和卸载的实现方法
    在日常工作中;经常会遇到这样的需求: Oracle 数据表跟文本或者文件格式进行交互;即将指定文件内容导入对应的 Oracle 数据表中;或者从 Oracle 数据表导出。 其他数据库中的表跟Or...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作