el-select中下拉数据太多,页面卡顿

问题

下拉框选项数据太多:由于下拉的数据过多,导致页面渲染复杂化,使得页面卡顿或者卡死问题。

解决办法

由于数据过多导致渲染卡顿,所以减少需要渲染的数据。首先,我们可以在拿到数据的时候进行懒加载,默认只展示20条数据,随着用户下拉的滑动,逐渐增加条数。这里我们自定义一个下拉的懒加载。其次,使用fildter-method方法进行过滤下拉数据。

示例代码

html 复制代码
<template>
	<el-select v-model="accept_id" v-selectloadmore:rangeNum="() => rangeNum += 10" size="mini" filterable :filter-		method="filterMethod" placeholder="选择接收方">
   <el-option v-for="item in acceptList.slice(0,rangeNum)" :key="item.id" :value="item.id" :label="item.name">
     {{ item.name }}
   </el-option>
 </el-select>
</template>
<script>
 export default {
   	directives: {
	    'selectloadmore': {
	      bind(el, binding) {
	        const selectDom = el.querySelector('.el-select-dropdown .el-select-dropdown__wrap')
	        selectDom.addEventListener('scroll', () => {
	          if (selectDom.scrollHeight - selectDom.scrollTop <= selectDom.clientHeight + 20) {
	            binding.value()
	          }
	        })
	      }
	    }
	 },
	data(){
		return {
			accept_id:undefined,
			acceptList:[],
			copyAcceptList:[],
			rangeNum: 20,
		}
	},
	mounted(){
		//获得acceptList的数据
	},
	methods:{
		filterMethod (){
			this.rangeNum = 20
			//请求接口,筛选数据
		}
	}
}
</script>
相关推荐
两个西柚呀4 小时前
未在props中声明的属性
前端·javascript·vue.js
楊无好8 小时前
react中props的使用
前端·react.js·前端框架
一个处女座的程序猿O(∩_∩)O8 小时前
Vue-Loader 深度解析:原理、使用与最佳实践
前端·javascript·vue.js
麦麦大数据9 小时前
F034 vue+neo4j 体育知识图谱系统|体育文献知识图谱vue+flask知识图谱管理+d3.js可视化
javascript·vue.js·知识图谱·neo4j·文献·体育·知识图谱管理
im_AMBER11 小时前
React 04
前端·react.js·前端框架·1024程序员节
fhsWar12 小时前
Vue3 props: `required: true` 与 vant 的`makeRequiredProp`
前端·javascript·vue.js
im_AMBER18 小时前
React 06
前端·javascript·笔记·学习·react.js·前端框架
阿珊和她的猫1 天前
深入剖析 Vue Router History 路由刷新页面 404 问题:原因与解决之道
前端·javascript·vue.js
麦麦大数据1 天前
F032 材料科学文献知识图谱可视化分析系统(四种知识图谱可视化布局) | vue + flask + echarts + d3.js 实现
vue.js·flask·知识图谱·数据可视化·论文文献·1024程序员节·科研图谱
web打印社区1 天前
使用React如何静默打印页面:完整的前端打印解决方案
前端·javascript·vue.js·react.js·pdf·1024程序员节