这篇文章主要介绍如何解决el-select数据过多懒加载问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
el-select数据过多处理方式
在日常项目中el-select组件的使用频率是非常之高的. 当数据过多时渲染时间非常长, 这里提供几个处理方式.
远程搜索
组件提供了远程搜索方式, 也就是按照你输入的结果匹配选项.
下拉懒加载loadMore
下拉懒加载, 当select滚动到底部时, 你再去请求一部分数据, 加入到当前数据中.
某组件中:
<template>
<el-select
v-model="value"
placeholder="请选择"
filterable
multiple
v-el-select-loadmore="loadmore"
>
<el-option
v-for="item in options"
:key="item.id"
:label="item.label"
:value="item.id">
</el-option>
</el-select>
</template>
export default {
directives: {
'el-select-loadmore': {
bind(el, binding) {
// 获取element-ui定义好的scroll盒子
const SELECTWRAP_DOM = el.querySelector('.el-select-dropdown .el-select-dropdown__wrap');
SELECTWRAP_DOM.addEventListener('scroll', function () {
const condition = this.scrollHeight - this.scrollTop <= this.clientHeight;
if (condition) {
binding.value();
}
});
}
}
},
data() {
return {
value: '',
options: [],
formData: {
pageIndex: 1,
pageSize: 20,
}
};
},
mounted() {
this.getList(this.formData);
},
methods: {
loadmore() {
this.formData.pageIndex++;
this.getList(this.formData);
},
getList(formData) {
// 这里是接口请求数据, 带分页条件
const _res = [1, 2, 3]; // 请求得到的数据
this.options = [...this.options, ..._res];
}
}
};
这样就做到了滚动懒加载, 具体细节在应用时修改.
问题
这样渲染问题解决了, 随之会出现一个问题, 就是当你的value为选中的数据后, 分页数大的数据.
当页数小时, options数据中没有当前value的那一个, value就会显示为得到的id.
当你选中后你要保存下来当前的id以及lable, 下次过来时, 带入当前组件, 手动放在options中,这样就解决了这个问题.
以上是“如何解决el-select数据过多懒加载问题”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网行业资讯频道!