多行文本框

多行文本框组件是一个多行输入框,允许您编写较长的文本。


安装

npx nextui-cli@latest add input
以上命令仅用于单个安装。如果您已在全局安装 @nextui-org/react,则可以跳过此步骤。

导入

用法

禁用

只读

必填

如果您将 isRequired 属性传递给输入,它将在标签末尾显示一个 danger 星号,并且文本区域将变为必填。

自动调整大小

文本区域会根据内容自动调整大小,但您也可以使用 minRowsmaxRows 属性来设置最小和最大高度。它基于 react-textarea-autosize

无自动调整大小

如果您想禁用自动调整大小功能,可以使用 disableAutosize 属性。

变体

带错误消息

您可以将 isInvaliderrorMessage 属性组合起来,以显示一个无效的文本区域。

描述

受控

您可以使用 valueonValueChange 属性来控制输入值。

注意: NextUI Textarea 也支持原生事件,例如 onChange,这对表单库(如 FormikReact Hook Form)很有用。

插槽

  • base: 输入包装器,它处理对齐、放置和整体外观。
  • label: 文本区域的标签,它显示在文本区域的上方、内部或左侧。
  • inputWrapper: 包裹 label(当它在内部时)和 innerWrapper
  • input: 文本区域输入元素。
  • description: 文本区域的描述。
  • errorMessage: 文本区域的错误消息。

数据属性

Textareabase 元素上具有以下属性

  • 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 属性

属性类型描述默认值
childrenReactNode文本区域的内容。-
minRowsnumber要显示的最小行数。3
maxRowsnumber文本区域可以扩展到的最大行数。8
cacheMeasurementsboolean在计算文本区域高度时重用先前计算的测量值。false
variantflat | bordered | faded | underlined文本区域的变体。flat
颜色default | primary | secondary | success | warning | danger文本区域的颜色。default
尺寸sm|md|lg文本区域的尺寸。md
圆角none | sm | md | lg | full文本区域的圆角。-
标签ReactNode作为标签显示的内容。-
字符串文本区域的当前值(受控)。-
默认值字符串文本区域的默认值(不受控)。-
占位符字符串文本区域的占位符。-
开始内容ReactNode在输入框左侧渲染的元素。-
endContentReactNode在输入框右侧渲染的元素。-
descriptionReactNode文本区域的描述。提供提示,例如对选择内容的具体要求。-
errorMessageReactNode | ((v: ValidationResult) => ReactNode)文本区域的错误消息。-
validate(value: string) => ValidationError | true | null | undefined在提交时(例如,在失焦时)验证输入值,返回无效值的错误消息。如果 validationBehavior 设置为 native,则在表单提交时显示验证错误。对于实时验证,请使用 isInvalid 属性。-
validationBehaviornative | aria是否使用原生 HTML 表单验证来阻止表单提交(当值缺失或无效时),或者通过 ARIA 将字段标记为必填或无效。aria
labelPlacementinside | outside | outside-left标签的位置。inside
fullWidthboolean文本区域是否应占据其父级的宽度。true
isRequiredboolean在表单提交之前,文本区域是否需要用户输入。false
isReadOnlyboolean文本区域是否可以被用户选中但不能修改。
isDisabledboolean文本区域是否被禁用。false
isInvalidboolean文本区域是否无效。false
validationStatevalid | invalid文本区域是否应该显示其“有效”或“无效”的视觉样式。(已弃用)请使用 isInvalid 代替。-
disableAutosizeboolean文本区域是否应该禁用垂直自动调整大小。false
disableAnimationboolean文本区域是否应该进行动画。false
classNamesRecord<"base"| "label"| "inputWrapper"| "innerWrapper" | "input" | "description" | "errorMessage", string>允许为文本区域插槽设置自定义类名。-

输入事件

属性类型描述
onChangeReact.ChangeEvent <HTMLInputElement>当元素的值发生变化时调用的处理程序。您可以通过访问 event.target.value(字符串)来获取新值。
onValueChange(value: string) => void当元素的值发生变化时调用的处理程序。
onClear() => void当点击清除按钮时调用的处理程序。
onHeightChange(height: number, meta: { rowHeight: number }) => void当文本区域的高度发生变化时调用的处理程序。