【初次使用vue3 、element plus 渲染el-select 出现渲染不成功的问题】

主要代码

<el-row :gutter="20">
    <el-col :span="4"><el-input v-model="input" placeholder="请输入项目名称" @blur="blurName" /></el-col>
    <el-col :span="4"
      ><el-select v-model="value" class="m-2" placeholder="选择分类" @blur="blurCate"> <el-option v-for="item in dataForm.cateList" :key="item.value" :label="item.label" :value="item.value" /> </el-select
    ></el-col>
    <el-select v-model="dataForm.depId" multiple collapse-tags placeholder="请选择部门" style="width: 240px">
      <el-option v-for="item in dataForm.depList" :key="item.value" :label="item.label" :value="item.value" />
    </el-select>
    <el-col :span="4"> <el-date-picker v-model="value2" type="datetime" @blur="blurDate" placeholder="请选择开始时间" format="YYYY/MM/DD hh:mm:ss" value-format="YYYY-MM-DD h:m:s a" /></el-col>
    <el-col :span="8"></el-col>
    <!-- 列表展示 -->
  </el-row>

  const dataForm = {
  depId: "",
  depList: [
    {
      id: "",
      value: "",
      label: ""
    }
  ],
  cateList: [
    {
      id: "",
      value: "",
      label: ""
    }
  ]
}
//查询分类
const getCate = () => {
  baseService.get(`rp/projectcate/list`).then((res) => {
    dataForm.cateList.length = 0;
     for (let index = 0; index < res.data.length; index++) {
      dataForm.cateList.push({
        id: res.data[index].id,
        value: res.data[index].id,
        label: res.data[index].name
      });
    }

    console.log("查询分类===>", dataForm.cateList);
  });
};
const init = () => {
  //查询二级部门
  getDepList();
  //查询分类
  getCate();
};
init();
  1. 页面显示

解决办法

const dataForm = reactive({
  depId: "",
  depList: [
    {
      id: "",
      value: "",
      label: ""
    }
  ],
  cateList: [
    {
      id: "",
      value: "",
      label: ""
    }
  ]

其实就是没写 reactive ,第一次用,还不熟悉,我真服了

在这里插入图片描述
ps: 大佬勿喷,低级错误,我已经自我检讨过了。

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值