MultilineTextInput 多行输入
多行文本输入框,输入能力与 TextInput 一致。
基本用法
当前 0 个字符
行数与自动高度
rows 是最小行数(写入 <textarea> 的 rows 属性)。开启 autosize 后高度随内容自适应:到 maxRows 行封顶,超出转为内部滚动;maxRows 缺省为 max(2 × rows, 10)。
不开 autosize 时高度固定为 rows 行,内容超出直接出现滚动条。
自动高度的重测另有尺寸观察兜底:字体加载、容器或宽度变化后也会重算高度(原版只在输入时重测,高度会滞留)。
滚动条让位
出现垂直滚动条时,指示器与位于输入框之后的标签会自动偏移滚动条宽度让位,避免压在滚动条上(多行输入恒启用,无需配置)。当输入方向与页面方向分叉时(如 LTR 页面配 dir='rtl' 输入),让位会整体撤回,避免原版在该场景下出现的标签拉伸变形。
换行与 Enter
Enter 恒插入换行。
与原版的差异
原版的 allowLinebreaks 配置(阻止换行、把换行清洗为空格)与配套的 enter 事件(Ctrl/Cmd+Enter 触发)在本工程不提供——需要限制换行时,在 onChange 里清洗值即可。
与 TextInput 同源的能力
以下行为与 TextInput 完全一致,不再重复展开:
- 标签:
label/labelPosition/invisibleLabel; - 图标与指示器:
icon、indicator,未显式给indicator且required为真时自动回退 required 指示器; - 软校验:
validate(正则 / 函数 /'non-empty'/'integer'),标红不改值; - 状态:
maxLength、readOnly(可聚焦可复制)、disabled。
属性落点
组件根是不可聚焦的 <div>,输入元素是 <textarea>。落点规则与 TextInput 相同:
- props 的
...rest落在根 div 上;要写到原生<textarea>的属性(如role、aria-*)走inputProps通道,其onChange/onBlur/onFocus串联在组件自身逻辑之后。 inputRef指向内部<textarea>(组件ref指向根 div),聚焦输入框用inputRef。tabIndex、title、dir、accessKey、name由组件接管,直接落在<textarea>上(对齐原版落点),不走rest。