单选框 Radio
该组件封装自 Radix UI Radio Group,并根据 Lucide 提供的 Circle 图标自定义了单选框的外观。适用于需要用户选择单一选项的场景。
📦 引入方式
import { RadioGroup, RadioGroupItem } from '@itera-web/react-ui-core';
🧩 使用示例
📚RadioGroup 容器
- 示例
- 源码
<RadioGroup>
<label className="flex items-center gap-2 cursor-pointer">
<RadioGroupItem value="option1" />
Option 1
</label>
<label className="flex items-center gap-2 cursor-pointer">
<RadioGroupItem value="option2" />
Option 2
</label>
</RadioGroup>
📚 使用 defaultValue 属性设置默认选中的单选框
defaultValue 属性允许在没有 value 和 onValueChange 的情况下设置初始选中项。
- 示例
- 源码
<RadioGroup defaultValue="option1">
<label className="flex items-center gap-2 cursor-pointer">
<RadioGroupItem value="option1" />
Option 1
</label>
<label className="flex items-center gap-2 cursor-pointer">
<RadioGroupItem value="option2" />
Option 2
</RadioGroup>
📚 使用 disabled 禁用单选框项
禁用 RadioGroupItem 会导致其无法被选中,并且显示为禁用样式。
- 示例
- 源码
<RadioGroup defaultValue="option1">
<label className="flex items-center gap-2 cursor-pointer">
<RadioGroupItem value="option1" disabled />
Option 1
</label>
<label className="flex items-center gap-2 cursor-pointer">
<RadioGroupItem value="option2" />
Option 2
</label>
</RadioGroup>
🧩 组件结构
| 组件 | 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|---|
RadioGroup | value | string | — | 当前选中的值(受控) |
onValueChange | (value: string) => void | — | 选项变化时触发的回调函数(受控) | |
className | string | — | 自定义类名,用于样式扩展 | |
...props | React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root> | — | 继承自 Radix 的其他属性 | |
RadioGroupItem | value | string | — | 单选框的唯一标识,需与 RadioGroup 中的 value 匹配 |
className | string | — | 自定义类名,用于样式扩展 | |
disabled | boolean | false | 是否禁用该选项 | |
...props | React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item> | — | 继承自 Radix 的其他属性 |
🎨 样式说明
- RadioGroup:使用
gridgap-2创建单选框项的间距。 - RadioGroupItem:使用了
aspect-square和h-4w-4设置为一个 4x4 的圆形,加入了边框和自定义的选中指示器(使用Circle图标)。 - 选中指示器:当单选框被选中时,
RadioGroupPrimitive.Indicator组件会渲染一个Circle图标,表示选中状态。 - 禁用状态:如果
RadioGroupItem被禁用,会添加disabled:cursor-not-allowed和disabled:opacity-50样式,禁止用户点击。
📐 设计说明
- 样式统一性:通过
className可以灵活调整每个单选框的外观,提供统一的外观风格。 - Radix 基础:基于
Radix UI的组件封装,保证了组件的可访问性和性能。 - 自定义指示器:使用
Lucide的Circle图标,轻松实现自定义选中指示器。