Textarea 文本域
Textarea 文本域
多行文本输入控件,对齐 Ant Design Input.TextArea 能力,支持自适应高度、字数统计、校验状态、形态变体与可清除。
何时使用
- 需要用户输入大段文本,如描述、评论、备注等。
- 需要限制行数、自适应高度增长或展示字数提示时。
迁移说明:原
@reglow/reui已改为转发reui/textarea,现有业务引用无需改动即可获得升级能力。
导入
代码演示
基础用法
指定行数
通过 rows 设置固定高度行数。
自适应高度 autoSize
autoSize 可设为 true,或 { minRows, maxRows } 限制最小/最大行数。达到 maxRows 后出现滚动条。
字数统计与最大长度
自定义计数格式:
校验状态
形态变体
与 Input / DatePicker 共用同一套主题。
可清除
禁用 / 只读
API
Props
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
modelValue | 当前值(v-model) | string | number | — |
defaultValue | 默认值(非受控) | string | number | — |
placeholder | 占位文字 | string | "" |
disabled | 是否禁用 | boolean | false |
readonly | 是否只读 | boolean | false |
rows | 行数(原生 rows) | number | — |
autoSize | 自适应高度 | boolean | { minRows?: number; maxRows?: number } | false |
maxLength | 最大长度 | number | — |
showCount | 展示字数 | boolean | { formatter?: (info: { value, count, maxLength? }) => string } | false |
allowClear | 可点击清除 | boolean | { clearIcon?: VNode } | false |
status | 校验状态 | "error" | "warning" | — |
variant | 形态变体 | "outlined" | "borderless" | "filled" | "underlined" | "outlined" |
bordered | 是否有边框 | boolean | true |
classNames | 语义化结构类名(root/textarea/count/clear) | Partial<Record<...>> | — |
styles | 语义化结构行内样式(同上) | Partial<Record<...>> | — |
同时透传原生 textarea 属性(name、id、cols、wrap 等)。
Events
| 事件 | 说明 | 回调参数 |
|---|---|---|
update:modelValue | v-model 更新 | (value: string) |
change | 内容变化(对齐 antd onChange) | (value: string) |
pressEnter | 按下回车(非 Shift) | (e: KeyboardEvent) |
clear | 点击清除按钮 | — |
focus | 获得焦点 | (e: FocusEvent) |
blur | 失去焦点 | (e: FocusEvent) |
实例方法
| 方法 | 说明 |
|---|---|
focus() | 聚焦文本域 |
blur() | 移除焦点 |
resize() | 手动重新计算 autoSize 高度 |
设计规范
- 文本域内容区域沿用原生
textarea换行行为;autoSize通过动态计算内容高度实现,达到maxRows后出现内部滚动条。 - 校验状态
status与形态variant均与Input/DatePicker共用lib/form-field统一主题。
