复选框
复选框允许用户从单个项目列表中选择多个项目,或将单个项目标记为已选择。
安装
npx nextui-cli@latest add checkbox
以上命令仅用于单独安装。如果您已全局安装 @nextui-org/react
,则可以跳过此步骤。
导入
用法
禁用
尺寸
颜色
圆角
不确定
该 isIndeterminate
属性将 Checkbox
设置为不确定状态,覆盖其外观并保持该状态,直到将其设置为 false
,而不管用户交互如何。
划线
自定义勾选图标
默认情况下,
IconProps
将传递给你的图标组件。请确保isSelected
、isIndeterminate
和disableAnimation
未传递给 DOM 元素。
受控
注意:NextUI
Checkbox
还支持本机事件,如onChange
,这对 Formik 和 React Hook Form 等表单库很有用。
插槽
- base:复选框包装器,它处理对齐、放置和一般外观。
- wrapper:一个内部容器,包括相对定位、flex 属性、溢出处理以及管理悬停和选中状态的样式。
- icon:复选框内的图标,控制大小、可见性和选中时的变化。
- label:与复选框关联的文本。
自定义样式
你可以通过将自定义 Tailwind CSS 类传递到组件插槽来定制 Checkbox
组件。
自定义实现
如果你需要进一步定制复选框,你可以使用 useCheckbox
钩子来创建你自己的实现。
注意:我们使用 Tailwind Variants 来实现上述样式,你可以使用任何其他库,例如 clsx 来实现相同的效果。
数据属性
Checkbox
在 base
元素上具有以下属性
- data-selected:当复选框被选中时。基于
isSelected
属性。 - data-pressed:选中复选框时。基于 usePress
- data-invalid:复选框无效时。基于
validationState
属性。 - data-readonly:复选框为只读时。基于
isReadOnly
属性。 - data-indeterminate:复选框不确定时。基于
isIndeterminate
属性。 - data-hover:将鼠标悬停在复选框上时。基于 useHover
- data-focus:将焦点放在复选框上时。基于 useFocusRing。
- data-focus-visible:使用键盘将焦点放在复选框上时。基于 useFocusRing。
- data-disabled: 当复选框处于禁用状态时。基于
isDisabled
prop。 - data-loading: 当复选框处于加载状态时。基于
isLoading
prop。
无障碍
- 使用原生 HTML
<input>
元素构建。 - 完全支持表单自动填充等浏览器功能。
- 键盘焦点管理和跨浏览器标准化。
- 支持 Tab 和 Space 键的键盘事件。
- 支持辅助技术标签。
- 支持不确定状态。
API
复选框 Props
属性 | 类型 | 说明 | 默认值 |
---|---|---|---|
children | ReactNode | 复选框的标签。 | - |
icon | CheckboxIconProps | 复选框选中时要显示的图标。 | - |
value | string | 复选框元素的值,用于提交 HTML 表单时使用。 | |
name | string | 复选框元素的名称,用于提交 HTML 表单时使用。 | |
size | sm | md | lg | 复选框的大小。 | md |
color | default | primary | secondary | success | warning | danger | 复选框的颜色。 | primary |
radius | none | sm | md | lg | full | 复选框的圆角。 | - |
划线 | 布尔值 | 是否应将标签划掉。 | false |
isSelected | 布尔值 | 是否应选择元素(受控)。 | |
defaultSelected | 布尔值 | 是否应选择元素(不受控)。 | |
isRequired | 布尔值 | 在提交表单之前,是否要求用户在复选框上勾选。 | false |
isReadOnly | 布尔值 | 是否可以选择复选框,但不能由用户更改。 | |
isDisabled | 布尔值 | 是否禁用复选框。 | false |
isIndeterminate | 布尔值 | 不确定性仅是表现形式。无论用户交互如何,不确定的视觉表示都将保持不变。 | |
isInvalid | 布尔值 | 是否复选框无效。 | false |
validationState | valid | invalid | 是否应显示复选框的“有效”或“无效”视觉样式。(已弃用)改为使用 isInvalid。 | - |
disableAnimation | 布尔值 | 是否应禁用动画。 | false |
classNames | Record<"base"| "wrapper"| "icon"| "label", string> | 允许为复选框插槽设置自定义类名。 | - |
复选框事件
属性 | 类型 | 说明 |
---|---|---|
onChange | React.ChangeEvent<HTMLInputElement> | 在元素的选择状态发生变化时调用的处理程序。你可以通过访问 event.target.checked (布尔值)来提取新的选中状态。 |
onValueChange | (isSelected: boolean) => void | 在元素的选择状态发生变化时调用的处理程序。 |
类型
复选框图标属性
type IconProps = {"data-checked": string;isSelected: boolean;isIndeterminate: boolean;disableAnimation: boolean;className: string;};type CheckboxIconProps = ReactNode | ((props: IconProps) => ReactNode);