多行文本框
多行文本框组件是一个多行输入框,允许您编写较长的文本。
安装
npx nextui-cli@latest add input
以上命令仅用于单个安装。如果您已在全局安装 @nextui-org/react
,则可以跳过此步骤。
导入
用法
禁用
只读
必填
如果您将 isRequired
属性传递给输入,它将在标签末尾显示一个 danger
星号,并且文本区域将变为必填。
自动调整大小
文本区域会根据内容自动调整大小,但您也可以使用 minRows
和 maxRows
属性来设置最小和最大高度。它基于 react-textarea-autosize。
无自动调整大小
如果您想禁用自动调整大小功能,可以使用 disableAutosize
属性。
变体
带错误消息
您可以将 isInvalid
和 errorMessage
属性组合起来,以显示一个无效的文本区域。
描述
受控
您可以使用 value
和 onValueChange
属性来控制输入值。
注意: NextUI
Textarea
也支持原生事件,例如onChange
,这对表单库(如 Formik 和 React Hook Form)很有用。
插槽
- base: 输入包装器,它处理对齐、放置和整体外观。
- label: 文本区域的标签,它显示在文本区域的上方、内部或左侧。
- inputWrapper: 包裹
label
(当它在内部时)和innerWrapper
。 - input: 文本区域输入元素。
- description: 文本区域的描述。
- errorMessage: 文本区域的错误消息。
数据属性
Textarea
在 base
元素上具有以下属性
- data-invalid: 当文本区域无效时。基于
isInvalid
属性。 - data-required: 当文本区域是必需时。基于
isRequired
属性。 - data-readonly: 当文本区域是只读时。基于
isReadOnly
属性。 - data-hover: 当文本区域被悬停时。基于 useHover
- data-focus: 当文本区域获得焦点时。基于 useFocusRing.
- data-focus-visible: 当文本区域使用键盘获得焦点时。基于 useFocusRing.
- data-disabled: 当文本区域被禁用时。基于
isDisabled
属性。
无障碍性
- 使用原生
<input>
元素构建。 - 支持视觉和 ARIA 标签。
- 支持更改、剪贴板、组合、选择和输入事件。
- 通过 ARIA 向辅助技术公开必需和无效状态。
- 支持通过 ARIA 与输入链接的描述和错误消息帮助文本。
API
Textarea 属性
属性 | 类型 | 描述 | 默认值 |
---|---|---|---|
children | ReactNode | 文本区域的内容。 | - |
minRows | number | 要显示的最小行数。 | 3 |
maxRows | number | 文本区域可以扩展到的最大行数。 | 8 |
cacheMeasurements | boolean | 在计算文本区域高度时重用先前计算的测量值。 | false |
variant | flat | bordered | faded | underlined | 文本区域的变体。 | flat |
颜色 | default | primary | secondary | success | warning | danger | 文本区域的颜色。 | default |
尺寸 | sm |md |lg | 文本区域的尺寸。 | md |
圆角 | none | sm | md | lg | full | 文本区域的圆角。 | - |
标签 | ReactNode | 作为标签显示的内容。 | - |
值 | 字符串 | 文本区域的当前值(受控)。 | - |
默认值 | 字符串 | 文本区域的默认值(不受控)。 | - |
占位符 | 字符串 | 文本区域的占位符。 | - |
开始内容 | ReactNode | 在输入框左侧渲染的元素。 | - |
endContent | ReactNode | 在输入框右侧渲染的元素。 | - |
description | ReactNode | 文本区域的描述。提供提示,例如对选择内容的具体要求。 | - |
errorMessage | ReactNode | ((v: ValidationResult) => ReactNode) | 文本区域的错误消息。 | - |
validate | (value: string) => ValidationError | true | null | undefined | 在提交时(例如,在失焦时)验证输入值,返回无效值的错误消息。如果 validationBehavior 设置为 native ,则在表单提交时显示验证错误。对于实时验证,请使用 isInvalid 属性。 | - |
validationBehavior | native | aria | 是否使用原生 HTML 表单验证来阻止表单提交(当值缺失或无效时),或者通过 ARIA 将字段标记为必填或无效。 | aria |
labelPlacement | inside | outside | outside-left | 标签的位置。 | inside |
fullWidth | boolean | 文本区域是否应占据其父级的宽度。 | true |
isRequired | boolean | 在表单提交之前,文本区域是否需要用户输入。 | false |
isReadOnly | boolean | 文本区域是否可以被用户选中但不能修改。 | |
isDisabled | boolean | 文本区域是否被禁用。 | false |
isInvalid | boolean | 文本区域是否无效。 | false |
validationState | valid | invalid | 文本区域是否应该显示其“有效”或“无效”的视觉样式。(已弃用)请使用 isInvalid 代替。 | - |
disableAutosize | boolean | 文本区域是否应该禁用垂直自动调整大小。 | false |
disableAnimation | boolean | 文本区域是否应该进行动画。 | false |
classNames | Record<"base"| "label"| "inputWrapper"| "innerWrapper" | "input" | "description" | "errorMessage", string> | 允许为文本区域插槽设置自定义类名。 | - |
输入事件
属性 | 类型 | 描述 |
---|---|---|
onChange | React.ChangeEvent <HTMLInputElement> | 当元素的值发生变化时调用的处理程序。您可以通过访问 event.target.value (字符串)来获取新值。 |
onValueChange | (value: string) => void | 当元素的值发生变化时调用的处理程序。 |
onClear | () => void | 当点击清除按钮时调用的处理程序。 |
onHeightChange | (height: number, meta: { rowHeight: number }) => void | 当文本区域的高度发生变化时调用的处理程序。 |