Radio
radio单选 · RadioGroup 单选组 + 键盘方向键
用法
基础用法
RadioGroup 包裹多个 Radio,单选互斥,默认纵向排列。
tsx
<RadioGroup defaultValue="b" aria-label="选项">
<Radio value="a" label="选项一" />
<Radio value="b" label="选项二" />
<Radio value="c" label="选项三" />
</RadioGroup>横向排列
设置 orientation="horizontal" 让选项横向排布。
tsx
<RadioGroup orientation="horizontal" defaultValue="m" aria-label="性别">
<Radio value="m" label="男" />
<Radio value="f" label="女" />
</RadioGroup>禁用
单个 Radio 加 disabled 禁用某项;整组 disabled 禁用全部。
tsx
<RadioGroup defaultValue="a" aria-label="套餐">
<Radio value="a" label="标准" />
<Radio value="b" label="专业(暂不可选)" disabled />
<Radio value="c" label="旗舰" />
</RadioGroup>搭配 Field 校验
包进 Field 获得标签与错误提示,校验态会传导到圈描边。
请选择一个套餐
tsx
<Field label="套餐" error="请选择一个套餐" className="w-72">
<RadioGroup defaultValue="">
<Radio value="basic" label="基础版" />
<Radio value="plus" label="增强版" />
</RadioGroup>
</Field>何时用
一组互斥选项里选且只选一个、且选项数少(约 2–6 个)需全部直接可见时用。选项多需收起或搜索改用 Select;多选共存改用 CheckboxGroup;横向二三段且要滑块视觉用 Segmented。
导入
ts
import { RadioGroup, Radio } from "@hulianui/ui"Props
RadioGroup
| 名称 | 类型 | 默认 | 说明 |
|---|---|---|---|
| value | string | — | 受控选中值 |
| defaultValue | string | — | 非受控初始选中值 |
| disabled | boolean | false | 整组禁用 |
| required | boolean | — | 表单必选 |
| name | string | — | 原生表单 name |
| orientation | "vertical"|"horizontal" | "vertical" | 仅控布局 |
| className | string | — | — |
| aria-label | string | — | 无可见标题时提供 |
Radio
| 名称 | 类型 | 默认 | 说明 |
|---|---|---|---|
| value * | string | — | 必填,标识该选项 |
| disabled | boolean | false | 单项禁用 |
| id | string | — | — |
| className | string | — | 落在 Radio.Root |
Events
RadioGroup
| 事件 | 类型 | 说明 |
|---|---|---|
| onValueChange | (value: string) => void | 选中变化回调 |
Slots
RadioGroup
| 插槽 | 类型 | 说明 |
|---|---|---|
| children | ReactNode | 内放 Radio 项 |
Radio
| 插槽 | 类型 | 说明 |
|---|---|---|
| label | ReactNode | 可选 inline label(点右,原生 <label> 关联) |
禁忌 / 坑
- 选中值统一由
RadioGroup管,Radio不自带选中态——别在Radio上找checked。 - 用
value/onValueChange即受控,须自管 state;只给初值用defaultValue,二者不要混用。 - 无可见标题的单选组要给
aria-label,否则无障碍读屏无名。
相关
Input · Textarea · Select · Checkbox · CheckboxGroup · Switch
Playground
<RadioGroup orientation="vertical" defaultValue="standard">
<Radio value="standard" label="标准" />
<Radio value="pro" label="专业" />
</RadioGroup>