Skip to content

Mentions 提及

带「@提及」语法的多行输入框。在 textarea 中输入特定 prefix(默认 @)后弹出候选浮层,选中后插入 @username 到光标位置。常见于评论、IM、协作工具的 @ 队友、# 话题、/ 命令场景。

基本使用

v-model 绑定输入值,options 提供候选项。输入 @ 后浮层打开。

自定义选项格式

提供 { value, label, disabled } 形态可独立控制 value 与显示文本。label 用于浮层显示,value 是真正插入到 textarea 的字符串。

多触发字符

prefix 传数组支持同时识别多个触发字符。

自定义分隔符

split 控制选中后追加的字符(默认空格)。

自定义过滤

filter-option 控制候选项过滤:true(默认 includes)/ false(不过滤)/ 函数 (input, option) => boolean

区分大小写

默认 caseSensitive=false(输入 An 也能匹配 anna);开启后,必须严格匹配大小写。

自适应高度 autoSize

autoSize 让 textarea 跟随内容自动伸缩。可以传 true(无限制)或 { minRows, maxRows }(限制范围)。

浮层位置 placement

placement="top" 把候选浮层放到 textarea 上方,适合输入区位于页面底部(如评论框)。

空数据占位 notFoundContent

候选过滤后无匹配项时显示 notFoundContent;不传则取 ConfigProvider locale(默认中文「暂无数据」)。

自定义选项渲染(option slot)

#option slot 接收 { option, index } scope,常用于做「头像 + 姓名 + 角色」的双行选项。

Variants

录入组件统一 variant 形态。四档:outlined(默认)/ filled / borderless / underlined

校验状态 status

status='error' | 'warning' 控制边框 / focus 阴影色(视觉边框层在 __textarea,与 variant 一致)。Form 联动会自动透传 —— 放进 <c-form-item> 内校验失败时自动加 --status-error 类。

API

Props

参数类型默认值说明
modelValuestringnull--
defaultValuestring''非受控初始值
options(string | { value, label?, disabled? })[][]候选项
prefixstring | string[]'@'触发字符;数组形态可同时识别多个
splitstring' '选中后追加的分隔符
placeholderstring--占位文案
disabledbooleanfalse是否禁用
rowsnumber3textarea 行数
filterOptionboolean | (input, option) => booleantrue过滤逻辑
caseSensitivebooleanfalse默认过滤是否区分大小写
notFoundContentstring暂无数据空数据占位
placement'top' | 'bottom''bottom'浮层方位(基于 textarea)
popupMaxHeightnumber256浮层最大高度(px)
autoSizeboolean | { minRows?: number, maxRows?: number }false自适应 textarea 高度;true 无限制,对象指定范围
searchDebouncenumber0搜索防抖延迟(毫秒),0 不防抖
variant'outlined' | 'filled' | 'borderless' | 'underlined''outlined'录入组件统一形态
status'' | 'error' | 'warning'''校验状态,Form 联动会自动透传

Events

事件名回调签名触发时机
update:modelValue(value: string)输入或选中时
change(value: string)同 update:modelValue
select(option: MentionOption, prefix: string)选中候选项时
search(text: string, prefix: string)浮层打开 / 搜索词变化时
focus(e: FocusEvent)textarea 聚焦
blur(e: FocusEvent)textarea 失焦

Slots

名称参数说明
option{ option: MentionOption, index: number }自定义单项渲染

已知限制(未交付)

  • 光标精确定位:浮层固定在 textarea 下方左侧,不会跟随光标位置精确浮动(需要 mirror div 测量字符宽度,工程量较大)。
  • 彩色 token 渲染:textarea 不支持富文本,@user 在编辑态保持纯文本。要彩色高亮需要切到 contenteditable,留到独立体验型组件 RichMentions。
  • trigger slot:textarea 不支持替换为 input 或自定义触发器。

Released under the MIT License.