UI Design System
build dev

Textarea

输入多行长文本。中文惯用名:多行输入框。
稳定本期新增已接入

元信息

字段值
规范 IDcomponent.textarea
名称Textarea
二级分类数据录入(data-entry)
用途输入多行长文本
描述中文惯用名:多行输入框。

预览

静态结构:Textarea 为多行文本域(vendored shadcn Textarea,data-slot="textarea"),rows 显式指定行数、缺省由内容自适应。Form 内声明非空 name 时经 FieldShell 包裹——data-slot="form-item" 容器 + label(htmlFor 关联控件 useId)+ 文本域 + data-slot="form-error" 校验错误行;独立渲染时 className / style 直接挂文本域本体。

DSL 结构

DslNode
{
  "type": "Textarea",
  "props": {
    "name": "remark",
    "label": "备注说明",
    "rows": 3,
    "placeholder": "请输入备注说明"
  }
}

何时用

何时使用

  • 采集多行文本:备注、说明、描述、正文草稿。
  • 需要固定行高的输入区(rows 指定行数),或由内容自适应高度的轻量文本域。
  • Form 内的长文本字段:声明 name 即自动注册并参与校验。

何时不用

  • 单行短文本:使用 Input;数值 / 日期 / 时间:使用 NumberInput / DatePicker / TimePicker。
  • 多行中需要引用用户或对象(@ 提及):使用 Mentions。
  • 需要富文本格式(加粗、链接、图片):Textarea 是纯文本域,改用富文本组件。

变体

变体视觉形态适用场景
默认(rows 自适应)多行描边文本域,高度随内容增长行数不确定的描述类输入
rows 固定行数按 rows 指定初始高度表单布局需要稳定高度(如固定 3 行备注)
Form 表单项FieldShell:label + 文本域 + 校验错误行表单内长文本字段(声明 name 自动注册)
disabled 禁用半透明不可输入只读回显、流程未就绪

API 属性

属性类型默认值说明
namestring—字段名;在 Form 内声明即自动成为表单项
labelstring—表单项标签(FieldShell 呈现)
rulesFieldRule[]—校验规则
valuestring—受控值(独立渲染时生效);Form 内作为字段初始值(优先于 Form initialValues)
placeholderstring—空态提示文案
rowsnumber—行数;缺省由内容自适应
disabledbooleanfalse禁用输入
onChange(value: string) => void—输入事件,传出 string(Renderer 绑定 events.onChange;非原生 event)
className / stylestring / CSSProperties—通用:根节点 class 合并 / 内联样式(Form 内为 form-item 容器,独立渲染时为文本域本身)

使用规范

  • 多行纯文本专用;需要格式、链接或图文混排时换富文本组件,不用 Textarea 硬扛。
  • rows 只定初始高度,浏览器仍可拖拽调整;需要稳定布局时同时约束容器宽度并确认换行表现。
  • 长文本字段配 rules 做必填与长度校验,避免纯前端截断造成静默丢字。
  • Form 内声明非空 name 才会注册字段;未声明 name 时仅为受控文本域,值不进表单 values。
  • placeholder 给填写提示(如「请描述问题现象与复现步骤」),承载实际约束信息而非重复 label。

正例

  • ✓ 工单表单:rows={4} 的「问题描述」字段,name + rules 必填,校验失败在下方提示。
  • ✓ 审核意见:rows={3} 的备注输入,onChange 回写受控 state 并实时统计字数。
  • ✓ 只读回显:disabled 展示已提交的备注内容,与编辑态视觉区分。

反例

  • ✕ 用 Textarea 采集单行字段(如姓名、编号),占用垂直空间且无必要(应使用 Input)。
  • ✕ 在 Textarea 中期待 @ 提及候选浮层(应使用 Mentions)。
  • ✕ 把长文本存进 Input 后靠 CSS 拉高伪装多行输入。

Design Token 映射

不适用:组件 tokenRefs 为空:样式 Token 数据尚未接入,三层映射(Primitive → Semantic → Component)待样式 Token 接入后回填。