Checkbox 复选框Checkbox · CheckboxGroup
从一组选项里选零个或多个,或者单独表示“同意 / 不同意”。需要提交后才生效时用它;立即生效的设置用 Switch;只能选一个用 Radio。
基本用法
children 是标签文字,点文字同样可以切换。description 是标签下的说明。
状态
indeterminate 表示“部分选中”,只影响外观和读屏播报。
复选组
CheckboxGroup 用一个字符串数组管理一组复选框。放进 Field 会自动用 Field 的标签命名,否则请给 aria-label。
至少选一个
请勾选全部条款
受控用法
单个复选框用 checked / onChange(参数是新的布尔值);组用 value / onChange(参数是选中项的数组)。下面是常见的“全选 + 半选”。
已选:read
规格
- 描边
- 1.5px;悬停时边变强调色,无光晕
- 选中
- 对勾描线 240ms · 延迟 50ms
- 取消
- 90ms 快速擦除
API
Checkbox
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
checked | boolean | — | 是否选中(受控)。在带 value 的 CheckboxGroup 里由组决定。 |
defaultChecked | boolean | false | 初始是否选中(非受控)。 |
onChange | (checked: boolean) => void | — | 状态变化时触发,参数是新状态。 |
indeterminate | boolean | false | 半选,只影响外观和读屏播报。 |
value | string | — | 在组里标识这一项;单独使用时是表单提交的值。 |
description | ReactNode | — | 标签下的说明文字。 |
invalid | boolean | — | 校验失败。 |
rootClassName / rootStyle | string / CSSProperties | — | 外层 <label> 的类名与样式。className / style 同样落在 <label> 上。 |
…rest | InputHTMLAttributes | — | 其余原生属性(disabled、required、name…)和 ref 落在 <input> 上。 |
CheckboxGroup
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
value | string[] | — | 选中项的 value 列表(受控)。 |
defaultValue | string[] | [] | 初始选中项(非受控)。 |
onChange | (value: string[]) => void | — | 选中项变化时触发。 |
name | string | — | 组内复选框共用的字段名。 |
orientation | 'vertical' | 'horizontal' | 'vertical' | 排列方向;横向放不下会换行。 |
disabled | boolean | — | 整组禁用。 |
invalid | boolean | — | 整组标成校验失败。在 Field 里默认跟随 Field。 |
无障碍
- 每一项都是真的
<input type="checkbox">,包在<label>里,点文字即可切换。 - Tab 逐个经过每个复选框,Space 切换。复选组没有方向键导航,这是复选框的常规模式。
- 半选时读屏读作“部分选中 / 混合”。
- CheckboxGroup 是
role="group",名称来自 Field 的标签或aria-label。 - 没有可见文字的复选框(表格里的行选择等)必须给
aria-label。 - 勾选框本身是装饰(
aria-hidden),状态由原生 input 传达;键盘聚焦时焦点环画在勾选框上。