Skip to content

Autocomplete 自动补全输入框

根据输入内容提供对应的输入建议。

基础用法

通过 fetch-suggestions 属性设置获取建议列表的方法。

基础用法

自定义模板

使用 default 插槽自定义建议项的显示内容。

自定义模板

远程搜索

通过模拟延时从服务器获取建议数据。

远程搜索

禁用状态

使用 disabled 属性禁用输入框。

禁用状态

可清空

使用 clearable 属性可快速清空内容。

可清空

不同尺寸

支持 largedefaultsmall 三种尺寸。

不同尺寸

自定义插槽

可以使用 loadingempty 插槽来自定义加载中和无数据时的内容。

自定义插槽

在 Nuxt 中使用

Autocomplete 组件在 Nuxt 3/4 环境下运行良好。由于支持自动导入,你只需直接编写组件名即可。

Nuxt 中使用

SSR 注意事项

  • ✅ 输入框的初始状态(包含 v-model 值)在服务端正确渲染
  • ✅ 尺寸(size)、占位符(placeholder)支持 SSR
  • ✅ 前后缀插槽在 SSR 阶段即已生成 HTML
  • ⚠️ 候选建议列表(Dropdown)仅在客户端交互(输入或聚焦)时弹出,不影响首屏 HTML 结构
  • 💡 搜索防抖和下拉定位在客户端激活(Hydration)后生效

SSR 安全性

Autocomplete 组件内部封装了 YhInputPopper 系统,通过 useId 确保了首屏渲染时 Input 与下拉关联 ID 的稳定性,完美避免了 SSR 下常见的 ID 冲突警报。

API

Props

属性名说明类型默认值
model-value / v-model绑定值string
placeholder占位文本string
disabled是否禁用booleanfalse
clearable是否可清空booleanfalse
size输入框尺寸'large' | 'default' | 'small''default'
fetch-suggestions获取建议的方法(query: string, callback: (suggestions: any[]) => void) => void
trigger-on-focus是否在聚焦时触发建议booleantrue
debounce防抖延迟 (ms)number300
placement下拉框位置'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end''bottom-start'
value-key建议对象中用于显示的键名string'value'
highlight-first-item是否默认高亮第一项booleanfalse
teleported是否将下拉框插入到 bodybooleantrue
fit-input-width下拉框宽度是否与输入框一致booleantrue
prefix-icon前置图标string | Component
suffix-icon后置图标string | Component
name原生 name 属性string
autofocus自动聚焦booleanfalse
autocomplete原生 autocomplete 属性string'off'

Events

事件名说明回调参数
input输入值变化时触发(value: string) => void
change值改变时触发(value: string) => void
focus获取焦点时触发(event: FocusEvent) => void
blur失去焦点时触发(event: FocusEvent) => void
clear点击清空按钮时触发() => void
select选中建议项时触发(item: any) => void

Slots

插槽名说明作用域
default自定义建议项内容{ item: any }
prefix输入框前缀内容
suffix输入框后缀内容
prepend输入框前置内容
append输入框后置内容
loading正在加载中的内容
empty无匹配数据时的内容

Expose

属性名说明类型
focus使 input 获取焦点() => void
blur使 input 失去焦点() => void
close关闭建议列表() => void
highlight高亮指定项(index: number) => void

主题变量

Autocomplete 组件使用以下 CSS 变量,你可以通过覆盖这些变量来自定义样式:

变量名说明默认值
--yh-autocomplete-border-color边框颜色var(--yh-border-color)
--yh-autocomplete-hover-border-color悬停边框色var(--yh-border-color-hover)
--yh-autocomplete-focus-border-color聚焦边框色var(--yh-color-primary)
--yh-autocomplete-disabled-bg-color禁用背景色var(--yh-fill-color-light)

Released under the MIT License.