巧妙解决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,一经查实,立即删除!

相关文章

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

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

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

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

手写springmvc

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

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

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

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

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

.net自定义控件Control、WebControl、CompositeControl

.net自定义控件Control、WebControl、CompositeControl 一、呈现方法 1、Control主要有以下4个方法用于呈现 1 //该方法为入口方法2 public virtual void RenderControl (HtmlTextWriter writer) 3 { 4 this.RenderControl(writer,this.xxxAdapter); 5 } 6 7 p…

About Me

&#xff08;参考Matirx67大牛的格式&#xff09; 网名&#xff1a;Sephiroth Lee 年龄&#xff1a;不会算 生日&#xff1a;1994-1-20 性别&#xff1a;男 血型&#xff1a;不知道 星座&#xff1a;摩羯座 家乡&#xff1a;河北 学校&#xff1a;衡水中学 地址&#xff1a;衡水…

Java中连接池

最近在看书&#xff0c;其中有一段是&#xff1a; 相信有大佬已经能看得出来这是《企业IT架构转型之道》这本书了&#xff08;这是一本不错的书&#xff0c;推荐工作时长>2年的软件人员可以看看&#xff09;~~ 对于红色框内的那段文字&#xff0c;我有两个概念不是很明白&am…

C语言中 用选择结构编译算法,C语言程序设计立体化教程(高等教育立体化精品系列规划教材)...

导语内容提要李刚、唐炜主编的《C语言程序设计立体化教程(高等教育立体化精品系列规划教材)》主要分为四篇&#xff1a;语法基础篇、程序设计结构篇、初级应用篇和高级应用篇&#xff1b;其中第一篇语法基础部分介绍了C语言概述和C语言数据与运算&#xff1b;第二篇程序设计结构…

第二次实验报告(漏)

C程序设计实验报告 实验项目&#xff1a; 1.if语句的应用2.switch/case语句的应用3.switch/case语句嵌套if语句的应用4.switch/case结构的嵌套应用5.分析程序 姓名&#xff1a;王治林   实验地点&#xff1a;514教室   实验时间&#xff1a;2019.4.3 一、实验目的与要求 …

自我总结篇之vue的组件通信(父传子 子传父 非父子)

一&#xff1a;父传子 父组件代码如下&#xff1a; <template><div class"father"><child :messagemessage :message2message2></child> </div> </template> <script> import child from /components/child.vue export de…

浅谈“微服务”

微服务概述 1.1 易于扩展 1.2 部署简单 1.3 技术异构性 数据库的服务化切分 2.1 什么是“分库分表”&#xff1f; 2.2 数据库扩展的几种方式 2.3 分库分表的几种方式 2.4 引入分库分表中间件后面临的问题 2.5 现有分库分表中间件的横向对比 微服务架构中的分布式事务 3.1 什么…

liigo:爱可视70平板电脑使用感受,遗憾与满足并存

我想大部分人来这里&#xff0c;不是想听美言的。许多资料、宣传性文章、评测、视频等等&#xff0c;网络上已经有很多了&#xff08;其中外文占很大比例&#xff09;。 我想大部分人来这里&#xff0c;是想听真正的使用感受的。我想&#xff0c;我这里提到的许多内容&#xff…

visual studio 正则表达式 查找与替换文本

好多时候想要重构一些代码&#xff0c;但是修改起来发现很麻烦&#xff0c;因为简单的文本替换不能满足需求&#xff0c;这时候就要借助ide的力量了。还好visual studio 2010支持正则表达式查找和替换。如下图所示&#xff1a; document.all.domElementA.style.visibility hid…

51 Python - 装饰器 参数化装饰器——装饰器更通用

05参数化装饰器——装饰器更通用 参数化装饰器如何理解&#xff0c;简单理解就是让装饰器可以通用。场景举例&#xff0c;现在有个需求要改某一段文字&#xff0c;既要加<P>标签&#xff0c;又要加<B>&#xff0c;还有加<Div>。是不是意味着需要定义多个装饰…

python中numpy矩阵运算操作大全(非常全)!

python中numpy矩阵运算操作大全&#xff08;非常全&#xff09; //2019.07.10晚python矩阵运算大全1、矩阵的输出形式&#xff1a;对于任何一个矩阵&#xff0c;python输出的模板是&#xff1a;import numpy as np #引入numpy模块np1np.array([[1,2,3],[1,3,4],[1,6,2]...]) #数…

【摘录】MTK按键扫描原理及相关代码

一&#xff0e;MTK按键扫描原理&#xff1a; 不同的MTK平台内部提供的按键数目各有不同&#xff0c;但是扫描原理大致一样&#xff0c;这里以MTK6253为例来讲解记录。 MTK提供6*7共42个矩阵键盘&#xff0c;加上Power键总共43个按键&#xff0c;其中BB芯片引出6根行线ROW&#…

导致Android手机崩溃的壁纸,使用错误的壁纸会使你的Android手机崩溃

原标题&#xff1a;使用错误的壁纸会使你的Android手机崩溃现代智能手机是非常复杂的&#xff0c;能够显示大量的内容&#xff0c;并能浏览一系列复杂的色域、文件格式和媒体类型。然而&#xff0c;其中一些功能会以意想不到的方式影响到正常使用。Twitter用户Ice Universe发现…

android app逆向分析,如何开始对Android应用的逆向分析?

本文是我的关于如何开始Android逆向系列文章的第一部分。在文末提供了一个文档&#xff0c;你可以根据该文档说明部署同我一样的实验环境。在了解android应用的逆向之前&#xff0c;你必须对android平台及其架构和android应用程序的构建块(组件)已有了一个较好的理解。如果你并…

Swipper.js实现轮播功能

我是歌谣 放弃很难 但是坚持一定很酷 微信公众号关注小歌谣 今天我们来说一下工作中的一个小需求 就是给我们的页面去实现一个轮播的功能 最近需要实现一个小的需求 就是如何类似于如何把一个图片变成一个轮播效果 于是乎就开始考虑 用一款插件去实现这个功能 所以选择了一…