黎瑞芝 发表于 2025-10-1 16:42:51

解决Element-ui中select下拉框因数据量大导致页面渲染慢、卡顿的问题

直接上代码:
1、写一个防抖的工具函数

tools.js
// 防抖
export const _debounce = (fn, delay = 300) => {
var timer = null;
return function () {
    var _this = this;
    var args = arguments;
    if (timer) clearTimeout(timer);
    timer = setTimeout(function () {
      fn.apply(_this, args);
    }, delay);
};
}2、下拉框的options数据源

citys.js(这里只写一少部分)
export default [
    {value: 110100, name: "北京市"},
    {value: 120100, name: "天津市"},
    {value: 130100, name: "石家庄市"},
    {value: 130200, name: "唐山市"},
    {value: 130300, name: "秦皇岛市"},
    {value: 130400, name: "邯郸市"},
    {value: 130500, name: "邢台市"},
    {value: 130600, name: "保定市"},
    {value: 130700, name: "张家口市"},
    {value: 130800, name: "承德市"},
    {value: 130900, name: "沧州市"},
    {value: 131000, name: "廊坊市"},
    {value: 131100, name: "衡水市"},
    {value: 140100, name: "太原市"},
    ......
]3、业务代码

index.vue
<template>

    <el-form :inline="true" :model="dataForm" size="small" >
      <el-form-item>
      <el-select v-model="dataForm.cityCode" filterable :filter-method="filterMethod"
          v-el-select-loadmore="loadMore(rangeNumber)" @visible-change="visibleChange" placeholder="城市" clearable>
          <el-option :key="item.name + '' + i" :label="item.name" :value="item.value"
            v-for="(item, i) in citysList.slice(0, rangeNumber)"></el-option>
      </el-select>
      </el-form-item>
    </el-form>

</template>4、效果

              
 

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 解决Element-ui中select下拉框因数据量大导致页面渲染慢、卡顿的问题