巧妙解决element-ui下拉框选项过多的问题

1. 场景描述

不知道你有没有这样的经历,下拉框的选项很多,上万个选项甚至更多,这个时候如果全部把数据放到下拉框中渲染出来,浏览器会卡死,体验会特别不好

用人会说element-ui的select有一个remote-method,支持远程搜索,我们让服务端支持一下不就可以了,当然这是一种解决的方案。但是有时候这种方法有时候不一定适用

  (1)有时候服务端数据是经过计算返回给我们的,可能返回不是特别快,体验不是很好

  (2)有时候数据可能只有几千条,全部渲染又不太合适,一直掉接口不是特别好

  (3)仅仅通过前端能不能解决,如果能解决,岂不是减轻了服务端的工作和压力

 

2.解决办法

   提示:element-ui的select有一个fildter-method方法,我们可以通过这个方法来进行过滤下拉项

  假设我们有个下拉框是用来选择用户的

<el-selectv-model="userId"filterable:filter-method="userFilter"clearable><el-optionv-for="item in userList":key="item.userId":label="item.username":value="item.userId"></el-option>
</el-select>
userFilter(query = '') {let arr = this.allUserList.filter((item) => {return item.username.includes(query) || item.userId.includes(query)})if (arr.length > 50) {this.userList = arr.slice(0, 50)} else {this.userList = arr}
},
getUserWhiteList() {HttpRequest.post("/api/admin/community/getUserWhiteList").then(response => {this.allUserList = response.data.list;this.userFilter()});
},

如上所示,我们从后台获取用户列表,经过我们自己的过滤,我们每次只渲染50条数据,无论有多少数据,对我们来说也支持一个变量,占个内存。当然数据越多,数组的遍历也会相应的慢,但是这个影响不大。

我们不仅能过滤名字,还可以对我们制定的任一项进行过滤

优化:上面的代码我们还可以适当优化下,只有发现了数组长度超过了50项,我们就停止遍历

3.效果图

如上图所示,我的用户数据大概是2万条,可以看出响应的特别快。

转载于:https://www.cnblogs.com/mianbaodaxia/p/11153341.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/410844.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux 驱动入门 魏清,Linux下的SPI总线驱动(三)

版权所有&#xff0c;转载请说明转自原创作者&#xff1a;南京邮电大学 通信与信息系统专业 研二 魏清五&#xff0e;SPI测试代码对于SPI总线驱动&#xff0c;我们可以分为SPI控制设备驱动和SPI接口设备驱动。而作为驱动开发人员主要是像SPI移植的时候一样会添加SPI控制设备和…

[html] 如何在IOS下启用WebApp全屏模式?

[html] 如何在IOS下启用WebApp全屏模式&#xff1f; 手机端打开Web检查器&#xff0c;Mac端接入手机&#xff0c;打开Safari开发模式。 设置<meta>标签&#xff1a; <meta name"apple-mobile-web-app-capable" content"yes" /> <meta name…

【2019年07月08日】A股最便宜的股票

查看更多A股最便宜的股票&#xff1a;androidinvest.com/CNValueTop/ 便宜指数 PE PB 股息 ROE&#xff0c;四因子等权&#xff0c;数值越大代表越低估。 本策略只是根据最新的数据来选股&#xff0c;完全无人工参与的过程&#xff0c;所以并不能对接下来的利润或业绩做预测…

[html] 举例说明使用data-有什么优点?

[html] 举例说明使用data-有什么优点&#xff1f; 可以方便的缓存数据在dom上个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

linux 粘贴网站地址,linux 复制粘贴

ListView 完全优化 &plus; 多种listitem布局处理# 百度了下,感觉下面的博客文章还都挺全面的,写的很好,直接分享得了 Android性能优化--Listview优化 - tonycheng93 - 博客园http://www.cnblogs.co ...自动切换的JS菜单ADO&period;NET 快速入门(十四)&#xff1a;使用…

NOIP2002题目汇总

普及组 阶级求和&#xff08;模拟&#xff09;选数&#xff08;数学&#xff09;产生数&#xff08;高精度&#xff09;马拦过河卒&#xff08;递推&#xff09;提高组 均分纸牌&#xff08;模拟&#xff09;字串变换&#xff08;搜索&#xff09;自由落体&#xff08;模拟&…

Xpath语法学习记录

高级参考&#xff1a;https://blog.csdn.net/wudaoshihun/article/details/82226122 举例: 1 <!DOCTYPE html>2 <html>3 <head>4 <meta charset"utf-8">5 <title></title>6 </head>7 <bod…

[html] 可替换元素和不可替换元素有什么不同的特点?

[html] 可替换元素和不可替换元素有什么不同的特点&#xff1f; 可替换元素的内容由元素的某些属性的值决定不可替换元素的内容由子节点的内容决定个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目…

Linux循环登录怎么解决,文本模式循环登录! 求解决

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼的确只有/etc/bash.bashrc。。/etc/bash.bashrc:[ -z "$PS1" ] && returnshopt -s checkwinsizeif [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; thendebian_chroot$(cat /etc/deb…

Sharepoint 2010新体验之一-----基于Claims的全新验证机制

在SharePoint Server 2007中世界中&#xff0c;如果我们想在一个Web应用程序中并存多种验证机制&#xff0c;只能通过“扩展Web应用程序”来实现&#xff0c;这种方式实现上是通过不同的应用程序来交互同一内容数据库。但是在SharePoint 2010中&#xff0c;我们看到了新的身份验…

[html] 写一个三栏布局,两边固定,中间自适应

[html] 写一个三栏布局&#xff0c;两边固定&#xff0c;中间自适应 position marginfloat marginflex个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

手写springmvc

手写springmvc 既然已经手写了spring的IOC&#xff0c;那springmvc肯定也要尝试写写了。手写spring博客:https://www.cnblogs.com/xiaojiesir/p/11139203.html SpringMVC的运行流程&#xff1a; &#xff08;1&#xff09;首先浏览器发送请求——>DispatcherServlet&#xf…

[html] 页面需要支持多语言,如果是你该怎么做?

[html] 页面需要支持多语言&#xff0c;如果是你该怎么做&#xff1f; 有多语言选项利用i18n来适配多语言个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

工厂方法

工厂方法特点&#xff1a;将对象的创建放在工厂类中&#xff0c;利用抽象原理&#xff0c;将实例化行为延迟到工厂类中 using System;using System.Collections.Generic;using System.Text; namespace OOAD_FactoryMethod{ class Program { static void Main(stri…

centos7安装svn客户端和使用

rpm -qa subversion yum remove -y subversion yum install -y subversion svnserve --version svn checkout http://xxx.xx.xx/xx转载于:https://www.cnblogs.com/lihan829/p/11154631.html

linux可用机场客户端,Linux系统可用的6款Bittorrent客户端

大家都知道迅雷目前尚不支持Linux系统&#xff0c;其实使用Bittorrent客户端进行下载未尝不是一个好的选择&#xff0c;这里给大家介绍6款Linux可用Bittorrent客户端&#xff0c;方便经常需要进行文件下载的Linux用户。1.KtorrentKtorrent是KDE桌面环境默认安装的Bittorrent工具…

linux中resize的含义,linux的resize2fs命令

Linux下的resize2fs命令被用来增大或收缩未加载的文件系统的大小。下面由学习啦小编为大家整理了linux下resize2fs命令的相关知识&#xff0c;希望对大家有帮助!linux的resize2fs命令详解文件系统管理 resize2fs命令被用来增大或者收缩未加载的“ext2/ext3”文件系统的大小。如…

C#理论知识

override&#xff1a;要扩展或修改继承的方法、属性、索引器或事件的抽象实现或虚实现&#xff0c;必须使用 override 修饰符。重写的基方法必须是 virtual、abstract 或 override 的。override 声明不能更改 virtual 方法的可访问性。 override 方法和 virtual 方法必须具有相…

H3C 环路避免机制一:路由毒化

转载于:https://www.cnblogs.com/fanweisheng/p/11156838.html

c语言循环字符,字符串 非暴力for循环法(内附C语言代码)

对于长度为5位的一个01串&#xff0c;每一位都可能是0或1&#xff0c;一共有32种可能。它们的前几个是&#xff1a;0000000001000100001100100请按从小到大的顺序输出这32种01串。输入格式本试题没有输入。输出格式输出32行&#xff0c;按从小到大的顺序每行一个长度为5的01串。…