当前位置: 首页 > news >正文

vue3+element-plus,el-autocomplete远程搜索,解决下拉框闪一下的问题

element-plus,在使用el-autocomplete时,通过远程搜索调用接口,想要实现,输入后调用接口,接口返回有数据就显示下拉框,没有数据就不显示下拉框。

根据element-plus中el-autocomplete的用法进行远程搜索时,就会发现:无数据时或请求中下拉框闪一下的问题。

<el-autocompletev-model="name":fetch-suggestions="querySearch"clearablemaxlength="30"placeholder="请输入":hide-loading="true":trigger-on-focus="false"@select="selectName"
/>

原因:element-plus ,会在 fetch-suggestions 触发时立即渲染一个空下拉框(即使无数据),所以即使用了:hide-loading,还是会导致“闪一下”。

解决方案:

使用 activated 控制显隐

1、给组件加 ref 

<el-autocompletev-model="name":fetch-suggestions="querySearch"clearablemaxlength="30"placeholder="请输入":hide-loading="true":trigger-on-focus="false"@select="selectName"ref="autocompleteRef"
/>

2、在 querySearch 中手动控制 activated

  1. 在调用接口开始前把 acautocompleteRef.value.activated 变为 false

  2. 有数据且非空时,再设为 true

let autocompleteRef = ref()
const querySearch = async (queryString: string, cb: any) => {if (!queryString.trim()) {cb([])return}// 不显示下拉框,autocompleteRef.value.activated = falsetry {const{data} = await api(queryString)//必须要注意,el-autocomplete中的数组必须要有valuelet list = data.map((a: any) => {return {...a,value: a.name,}})let results = queryString? list.filter(createStateFilter(queryString)): listif (results.length > 0) {// 显示下拉框autocompleteRef.value.activated = true}cb(results)}catch(err) {cb([])}
}function createStateFilter(queryString: string) {return (state: any) => {return state.value.toLowerCase().indexOf(queryString.toLowerCase()) > -1}
}

这个问题,找了很多方法,但是最后发现还是通过控制activated才能解决我的问题,而且这个方法也算是比较简单安全能精准解决我需求的一个方法了。

http://www.dtcms.com/a/291527.html

相关文章:

  • 概率论与数理统计(八)
  • Java IO 流详解:从基础到实战,彻底掌握输入输出编程
  • 自定义命令行解释器shell
  • Android开发中Crash治理方案
  • C++中的detach
  • Python打卡Day20 常见的特征筛选算法
  • C 语言的指针复习笔记
  • 圆柱电池自动分选机:全流程自动化检测的革新之路
  • 大模型中的Actor-Critic机制
  • 嵌入式学习笔记--MCU阶段--DAY08总结
  • 【Java基础03】Java变量2
  • seata at使用
  • 自然语言推理技术全景图:从基准数据集到BERT革命
  • 设备虚拟化技术-IRF
  • 利用DeepSeek编写批量输出多个主机的磁盘状况的脚本
  • 携“养鲜”魔法赴中卫,容声冰箱让石头缝里的鲜甜走得更远
  • 前端之学习后端java小白(一)之SDKMAN及helloword
  • EcoVadis评估:为企业带来的多重价值与竞争优势
  • QT跨平台应用程序开发框架(11)—— Qt系统相关
  • STM32F1使用volatile关键字避免内存优化
  • 基于springboot+vue开发的图书馆座位预约系统【源码+sql+可运行】【50721
  • 在安卓开发中,多次点击启动 Service 会有什么问题?
  • 关键成功因素法(CSF)深度解析:从战略目标到数据字典
  • 后训练(Post-training)语言模型
  • NuGet02-包制作及管理
  • 本地部署Nacos开源服务平台,并简单操作实现外部访问,Windows 版本
  • Oracle数据库索引性能机制深度解析:从数据结构到企业实践的系统性知识体系
  • 【python数据结构算法篇】python数据结构
  • 数据库的介绍和安装
  • Qualcomm Linux 蓝牙指南学习--验证 Fluoride 协议栈的功能(2)