element-ui中el-select下拉框选项过多的优化方案

原创
小哥 2年前 (2023-05-13) 阅读数 40 #大杂烩

el-select中options数据超过3000这将导致前端页面显示,和业务场景数据我遇到了这个时间2w因此,页面不能使用没有优化。

一个优化的方法:

element-ui的select有一个remote-method支持远程搜索,我们可以简单地让服务器支持它,但这是一个解决方案。option;

我的方法:

element-ui的select有一个fildter-method方法,我们可以用这个方法来过滤下拉项

假设我们有一个下拉框选择用户


  

在这里将userId封装成v-model:

props: {
        value: {
            type: [String, Number],
            default: 
        }
    },
computed: {
        userId: {
            get () {
                return this.value || 
            },
            set (value) {
                this.$emit(input, value)
            }
        }
    },

获取option数据和滤波方法:

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()
    }
  );
},

应该注意的是,当呼应,整体option(allUserList)获得所需的显示值,并将它添加到显示值option(userList)中:

addValueOptions () {
            if (this.userId) {
                let target = this.allUserList.find((item) => { // 从大option发现当前项
                    return item.value === this.userId
                })
                if (target) { // 替换当前的小酒吧option比较,如果不是,添加
                    if (this.userList.every(item => item.value !== target.value)) {
                        this.userList.unshift(target)
                    }
                }
            }
        },

ok解决问题。

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除

热门