单选按钮组
单选按钮组允许用户从一组互斥选项中选择一个选项。
安装
npx nextui-cli@latest add radio
以上命令仅用于单个安装。如果 @nextui-org/react
已全局安装,则可以跳过此步骤。
导入
使用
禁用
默认值
带描述
水平
受控
您可以使用 value
和 onValueChange
属性来控制单选输入的值。
注意: NextUI
Radio
也支持原生事件,例如onChange
,这对表单库(如 Formik 和 React Hook Form)非常有用。
无效
插槽
-
RadioGroup 插槽
- base: 单选组根包装器,它包装标签和包装器。
- wrapper: 单选组包装器,它包装所有单选按钮。
- label: 单选组标签,它位于包装器之前。
- description: 单选组的描述插槽。
- errorMessage: 单选组的错误消息插槽。
-
Radio 插槽
- base: 单选按钮根包装器,它包装所有元素。
- wrapper: 单选按钮包装器,它包装控制元素。
- labelWrapper: 标签和描述包装器。
- label: 单选按钮的标签插槽。
- control: 控制元素,它是圆形元素。
- description: 单选按钮的描述插槽。
自定义样式
您可以通过将自定义 Tailwind CSS 类传递给组件插槽来自定义 RadioGroup
和 Radio
组件。
自定义实现
如果您需要更进一步地自定义单选组,可以使用 useRadio
钩子创建您自己的实现。
数据属性
-
RadioGroup 在
base
元素上具有以下属性- data-orientation: 广播组的方向。基于
orientation
属性。
- data-orientation: 广播组的方向。基于
-
Radio 在
base
元素上具有以下属性- data-selected: 当单选按钮被选中时。基于
isSelected
属性。 - data-pressed: 当单选按钮被按下时。基于 usePress.
- data-invalid: 当单选按钮无效时。基于
validationState
属性。 - data-readonly: 当单选按钮为只读时。基于
isReadOnly
属性。 - data-hover-unselected: 当单选按钮被悬停且未选中时。基于 useHover.
- data-hover: 当鼠标悬停在单选按钮上时。基于 useHover.
- data-focus: 当单选按钮获得焦点时。基于 useFocusRing.
- data-focus-visible: 当单选按钮通过键盘获得焦点时。基于 useFocusRing.
- data-disabled: 当单选按钮被禁用时。基于
isDisabled
属性。
- data-selected: 当单选按钮被选中时。基于
无障碍性
- 单选按钮组通过 ARIA 向辅助技术公开。
- 每个单选按钮都使用原生 HTML
<input>
元素构建,可以根据需要将其视觉隐藏以允许自定义样式。 - 完全支持浏览器功能,例如表单自动填充。
- 箭头键的键盘事件支持。
- 键盘焦点管理和跨浏览器规范化。
- 辅助技术的组和单选按钮标签支持。
API
RadioGroup Props
属性 | 类型 | 描述 | 默认值 |
---|---|---|---|
children | ReactNode | ReactNode[] | 单选按钮元素列表。 | - |
label | ReactNode | 单选按钮组的标签。 | - |
size | sm | md | lg | 单选按钮的大小。 | md |
color | default | primary | secondary | success | warning | danger | 单选按钮的颜色。 | primary |
方向 | horizontal | vertical | 单选按钮组的方向。 | vertical |
名称 | 字符串 | RadioGroup 的名称,用于提交 HTML 表单。请参阅 MDN。 | - |
值 | 字符串数组 | 当前选中的值。(受控)。 | - |
默认值 | 字符串数组 | 默认选中的值。(不受控)。 | - |
描述 | ReactNode | 单选按钮组描述。 | - |
错误消息 | ReactNode | ((v: ValidationResult) => ReactNode) | 单选组错误消息。 | - |
validate | (value: string) => ValidationError | true | null | undefined | 在提交时验证输入值(例如,在失去焦点时),对无效值返回错误消息。如果 validationBehavior 设置为 native ,则在表单提交时显示验证错误。对于实时验证,请使用 isInvalid 属性。 | - |
validationBehavior | native | aria | 是否使用原生 HTML 表单验证来阻止表单提交(当值缺失或无效时),或者通过 ARIA 将字段标记为必填或无效。 | aria |
isDisabled | boolean | 单选组是否禁用。 | false |
isRequired | boolean | 在表单提交之前,用户复选框是否在输入中必填。 | false |
isReadOnly | boolean | 复选框是否可以选择,但不能被用户更改。 | - |
isInvalid | boolean | 单选组是否无效。 | false |
validationState | valid | invalid | 输入是否应该显示其“有效”或“无效”的视觉样式。(已弃用)请使用 isInvalid 代替。 | false |
disableAnimation | boolean | 是否应该禁用动画。 | false |
classNames | Record<"base"| "wrapper"| "label", string> | 允许为单选组插槽设置自定义类名。 | - |
RadioGroup 事件
属性 | 类型 | 描述 |
---|---|---|
onChange | React.ChangeEvent<HTMLInputElement> | 当元素的值发生变化时调用的处理程序。您可以通过访问 event.target.value (字符串)来获取新值。 |
onValueChange | ((value: string) => void) | 当值发生变化时调用的处理程序。 |
单选按钮属性
属性 | 类型 | 描述 | 默认值 |
---|---|---|---|
children | ReactNode | 单选按钮的标签。 | - |
label | ReactNode | 单选按钮的标签。 | - |
size | sm | md | lg | 单选按钮的大小。 | md |
color | default | primary | secondary | success | warning | danger | 单选按钮的颜色。 | primary |
描述 | ReactNode | 字段的描述。提供提示,例如对选择内容的具体要求。 | - |
isDisabled | boolean | 单选按钮是否禁用。 | false |
isRequired | boolean | 在表单提交之前,用户复选框是否在输入中必填。 | false |
isReadOnly | boolean | 复选框是否可以选择,但不能被用户更改。 | - |
isInvalid | boolean | 单选按钮是否无效。这基于单选按钮组的 validationState 属性。 | false |
disableAnimation | boolean | 是否应该禁用动画。 | false |
classNames | Record<"base"| "wrapper"| "labelWrapper" | "label" | "control" | "description", string> | 允许为单选按钮插槽设置自定义类名。 | - |