解决前端el-select下拉数据量过大造成卡顿问题

背景

商家入驻申请单批量转移给某位招商人员,实现了一个下拉列表,可以进行下拉选择或者通过pin去搜索,业务犯困页面卡顿,查看是因为下拉列表数据量过大,页面渲染导致。
在这里插入图片描述

解决

数据量每次展示的时候,只提取出前30条数据,展示。

<el-select v-model="nextChecker" filterable placeholder="请选择分配人" :filter-method="filterCheckPerOptions" size="small">+
        <el-option v-for="item in checkPerOptionsTop30":key="item.userPin":label="item.userName":value="item.userPin"></el-option>+
 </el-select>+

通过:filter-method来提取出前30条数据。

 filterCheckPerOptions: function(query = "") {
            console.log(query, "==>query");
            var arr = this.checkPerOptions.filter(item => {
                return item.userName.includes(query);
            });
            if (arr.length > 200) {
                this.checkPerOptionsTop30 = arr.slice(0, 30);
            } else {
                this.checkPerOptionsTop30 = arr;
            }
        },

参考博客:
element select 数据量大卡顿

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我来解答你的问题。 首先,我们需要引入 `el-select` 和 `vue-virtual-scroller` 组件。然后,我们可以在 `el-select` 中使用 `filterable` 属性来开启筛选功能,并且使用 `remote` 属性来开启远程搜索。同时,我们需要使用 `virtual` 属性将 `vue-virtual-scroller` 应用到 `el-select` 组件中,以支持大量数据的渲染。 下面是一个示例代码: ```html <template> <el-select v-model="selectedValue" filterable remote :remote-method="fetchData" :virtual="virtualConfig" :options="options" > <template #option="{ option }"> <div>{{ option.label }}</div> </template> </el-select> </template> <script> import { ElSelect, ElOption } from "element-plus"; import VirtualScroller from "vue-virtual-scroller"; export default { components: { ElSelect, ElOption, VirtualScroller, }, data() { return { selectedValue: "", options: [], virtualConfig: { size: 20, }, }; }, methods: { async fetchData(query) { // 发送请求获取数据 const res = await fetch(`https://api.example.com/data?q=${query}`); const data = await res.json(); // 格式化数据 const options = data.map((item) => ({ value: item.value, label: item.label, })); // 更新选项列表 this.options = options; }, }, }; </script> ``` 在上面的示例代码中,我们使用 `fetchData` 方法来异步获取数据,并且将数据转换为 `el-option` 组件需要的格式。然后,我们将格式化后的数据赋值给 `options` 属性,以更新选项列表。 同时,我们使用 `virtualConfig` 对象来配置 `vue-virtual-scroller` 组件的一些参数,例如 `size` 属性表示每页渲染的选项数量。这样就可以在渲染大量数据时提高性能。 最后,我们使用 `template` 块来自定义每个选项的渲染方式。在上面的示例代码中,我们将每个选项的 `label` 属性作为显示文本。 希望这个示例代码能够帮助到你,如果还有其他问题,可以继续提出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值