elementui 组件的二次封装(二)

在使用elementui开发过程中,Select组件当数据量过大的时候会非常的卡顿,虽然elementui官网提供了可搜索的下拉框但是不满足需求。 为此我对原组件进行了简单的改造。

elementui官网例子

  1. 虽然是可搜索但是数据都在本地,而不是动态的搜索。当数量过大的时候下拉选项会有很严重的卡顿
    在这里插入图片描述
  2. 虽然是远程搜索但是数据也是都在本地,而不是动态的搜索。当数量过大的时候下拉选项会有很严重的卡顿
    在这里插入图片描述
  3. 重新封装后的select组件

参数说明

参数说明类型
getRequestConfig做为下拉选项内容请求参数,包含(requestMode,interface,incidentalData, headerInformation)Object
requestMode接口请求方式
interface接口地址
incidentalData接口携带参数
headerInformation接口请求头
<template lang="pug">
div
  el-select.common-select(
    v-model="searchConditions",
    remote,
    filterable,
    clearable,
    :loading="loading",
    @focus="remoteMethod"
  )
    el-option(
      v-for="(item, index) in sourceOptions",
      :key="index",
      :label="item.label",
      :value="item.value"
    )
</template>

<script>
import axios from 'axios'
export default {
  props: {
  	// 这块传过来的值可以根据自己的业务需求去改变
  	// 主要是要将接口请求的信息全部传给组件,在下拉框获得焦点时触发接口请求
    getRequestConfig: {
      type: Object,
      default() {
        return {}
      }
    }
  },
  data () {
    return {
      loading: false,
      sourceOptions: []
    }
  },
  mounted () {
    this.remoteMethod()
  },
  methods: {
    remoteMethod () {
      this.loading = true
      axios({
        method: this.getRequestConfig.requestMode,
        url:  this.getRequestConfig.interface,
        data: JSON.stringify(this.getRequestConfig.incidentalData), // 根据自己的数据格式去进行转换
        headers: JSON.stringify(this.getRequestConfig.headerInformation),// 根据自己的数据格式去进行转换
      }).then(({ data }) => {
        this.loading = false
        this.sourceOptions = data.data
      })
    }
  }
}
</script>

<style lang="scss" scoped>
.common-select {
  width: 100%;
}
</style>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值