输入

输入是一个允许用户输入文本的组件。它可以用于获取表单、搜索字段等中的用户输入。


安装

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

导入

用法

禁用

只读

必填

如果将 isRequired 属性传递给输入,它将在标签的末尾显示 danger 星号,并且输入将是必需的。

尺寸

颜色

变体

半径

标签位置

你可以通过设置 labelPlacement 属性为 insideoutsideoutside-left 来更改标签的位置。

注意:如果未传递 label,则 labelPlacement 属性默认值为 outside

密码输入

你可以使用 type 属性将输入类型更改为 password

清除按钮

如果你将 isClearable 属性传递给输入,它将在输入的末尾有一个清除按钮,当输入有值时它将可见。

开始和结束内容

你可以使用 startContentendContent 属性在输入框的开始和结束处添加内容。

带描述

你可以通过传递 description 属性给输入框添加描述。

带错误消息

你可以组合 isInvaliderrorMessage 属性来显示一个无效的输入。只有当 isInvalid 被设置为 true 时,errorMessage 才会显示。

带有 regex 电子邮件验证的示例

受控

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

注意:NextUI Input 也支持原生事件,如 onChange,这对诸如 FormikReact Hook Form 等表单库很有用。

插槽

  • base:输入包装器,它处理对齐、放置和一般外观。
  • label:输入的标签,它显示在输入上方、内部或左侧。
  • mainWrapper:当位置为 outside / outside-left 时,包装 inputWrapper
  • inputWrapper:当 label(在内部时)和 innerWrapper
  • innerWrapper:包装 inputstartContentendContent
  • input:输入元素。
  • clearButton:清除按钮,位于输入的末尾。
  • helperWrapper:包装 descriptionerrorMessage
  • description:输入的描述。
  • errorMessage:输入的错误消息。

自定义样式

你可以通过将自定义 Tailwind CSS 类传递给组件槽来定制 Input 组件。

自定义实现

如果您需要进一步自定义输入,可以使用 useInput 钩子创建您自己的实现。

数据属性

Inputbase 元素上具有以下属性

  • data-invalid:当输入无效时。基于 isInvalid 属性。
  • data-required:当输入为必填项时。基于 isRequired 属性。
  • data-readonly:当输入为只读时。基于 isReadOnly 属性。
  • data-hover:当输入处于悬停状态时。基于 useHover
  • data-focus:当输入获得焦点时。基于 useFocusRing
  • data-focus-within:当输入获得焦点或其任何子元素获得焦点时。基于 useFocusWithin
  • data-focus-visible:当输入通过键盘获得焦点时。基于 useFocusRing
  • data-disabled:当输入被禁用时。基于 isDisabled 属性。

辅助功能

  • 使用原生 <input> 元素构建。
  • 支持视觉和 ARIA 标签。
  • 支持更改、剪贴板、组合、选择和输入事件。
  • 通过 ARIA 将必需和无效状态暴露给辅助技术。
  • 支持通过 ARIA 将描述和错误消息帮助文本链接到输入。

API

输入属性

属性类型描述默认值
childrenReactNode输入的内容。-
variantflat | bordered | faded | underlined输入的变体。flat
colordefault | primary | secondary | success | warning | danger输入的颜色。default
sizesm | md | lg输入的大小。md
半径none | sm | md | lg | full输入的半径。-
标签ReactNode作为标签显示的内容。-
字符串输入的当前值(受控)。-
默认值字符串输入的默认值(不受控)。-
占位符字符串输入的占位符。-
说明ReactNode输入的说明。提供提示,例如对选择内容的特定要求。-
错误消息ReactNode | ((v: ValidationResult) => ReactNode)输入的错误消息。仅在 isInvalid 设置为 true 时显示-
验证(value: string) => ValidationError | true | null | undefined在提交时(例如在失焦时)验证输入值,为无效值返回错误消息。如果 validationBehavior 设置为 native,则在提交表单时显示验证错误。对于实时验证,请使用 isInvalid 属性。-
验证行为native | aria是否使用原生 HTML 表单验证来防止在值缺失或无效时提交表单,或通过 ARIA 将字段标记为必需或无效。aria
startContentReactNode在输入框左侧呈现的元素。-
endContentReactNode在输入框右侧呈现的元素。-
labelPlacementinside | outside | outside-left标签的位置。inside
fullWidthboolean输入框是否应占据其父元素的宽度。true
isClearableboolean输入框是否应具有清除按钮。false
isRequiredboolean在提交表单之前,是否要求用户在输入框中输入内容。false
isReadOnlyboolean输入框是否可以被用户选择但不能更改。
isDisabledboolean输入框是否已禁用。false
isInvalidboolean输入框是否无效。false
baseRefRefObject<HTMLDivElement>对基础元素的引用。-
validationStatevalid | invalid输入框是否应显示其“有效”或“无效”的可视样式。(已弃用)改为使用 isInvalid-
disableAnimationboolean输入框是否应具有动画效果。false
classNamesRecord<"base"| "label"| "inputWrapper"| "innerWrapper"| "mainWrapper" | "input" | "clearButton" | "helperWrapper" | "description" | "errorMessage", string>允许为输入框插槽设置自定义类名。-

输入框事件

属性类型描述
onChangeReact.ChangeEvent<HTMLInputElement>在元素的值更改时调用的处理程序。你可以通过访问 event.target.value(字符串)来提取新值。
onValueChange(value: string) => void元素值更改时调用的处理程序。
onClear() => void清除按钮被点击时调用的处理程序。