跳到主要内容

Textarea 多行输入

Textarea 固定 multiline 并顶对齐;单行请用 Input。它与 Input 使用相同严格受控/非受控 union、slot、错误和 ref 契约。

内容布局与消费交接

输入表面(包括内部 padding 和边框)在 minHeight / maxHeight 范围内增长与缩短;错误说明在表面外,不占上限。首次长文、外部 value 更新、宽度与应用字号变化后,按真实内容重新测量;超过上限默认内部滚动,不截断文字。省略 maxHeight 可持续增长。

受控清空通过外部 value 更新,ref 仍仅有 focus / blur。onFocus / onBlur 与 onContentSizeChange 原样交付;contentSize 是文字测量,组合区的总高度应由消费者自己的 onLayout 测量。页面负责键盘避让,回车可显式设置 submitBehavior="newline",发送与语音采集留在消费者。

用法

<Textarea defaultValue="首次草稿" minHeight={120} maxHeight={240} />
<Textarea value={note} onChangeText={setNote} error={note ? undefined : '请输入备注'} />

defaultValue 只用于首次初始化;受控模式必须同时传 valueonChangeText,两种 mode 不能中途切换。

高度与 a11y

  • minHeight 默认 96,必须是有限且至少 44 的数;非法值回退 96。
  • maxHeight 缺省时不限制;只有有限且不小于归一化后的 min 时生效,否则回退为无上限。
  • containerStyle 不能覆盖高度、min/max 尺寸、min/max 宽或 overflow,运行时 JS 传入也会剥除。
  • leading/trailing 只接受 TextFieldSlot。action slot 有 44×44pt 实际 frame,字段不可编辑时 action 也不可操作。
  • ref 是 TextFieldHandle,只有 focus() / blur()readOnly 改用 editable={false}

错误文字 Android 使用 polite live region;iOS 只播报挂载后的非空错误变更。请给没有可见标签的字段传 accessibilityLabel