Checkbox 复选框
Checkbox 用于从多个候选项中选择零个、一个或多个值,也适合表达“确认某项设置”的状态。
Rue 在使用 daisyUI 视觉类名的基础上,为 Checkbox 增加了更完整的受控状态、半选态和 Group 能力。
何时使用
- 需要表达独立开关,但又不希望像 Toggle 那样立即强调“开/关”语义时。
- 需要从一组并列选项中选择多个值时。
- 需要配合“全选/部分选中”状态表达批量操作时。
# Checkbox
展示基础用法,并支持 children 作为可点击说明区。
当前状态:已选中
# With fieldset and label
展示基础 fieldset 场景,适合设置页或表单分区。
# Controlled checkbox
通过 onCheckedChange 直接拿到布尔值,适合更简洁的受控写法。
开启每周摘要适合演示受控模式和更直接的布尔回调。
checked=falseonCheckedChange
# Sizes
使用 Rue 当前的尺寸体系。
# Colors
颜色语义保持与当前 Rue 主题一致。
# Disabled
既支持裸 checkbox,也支持带说明区的禁用态。
# Indeterminate
展示基础半选态场景,但改成组件级 prop,不再需要手动操作 ref。
组件会自动同步原生 input 的 indeterminate 状态。
# Checkbox Group
参考常见业务表单的核心能力,支持 options 数据驱动和受控值数组。
当前订阅:design-system
# Check all
组合 indeterminate 和 Group,可以快速搭建全选/部分选中逻辑。
已选 1/3
# Use with Grid
children 模式更适合卡片化说明和响应式栅格布局。
children 模式适合做卡片化布局或更复杂的说明区。
# Checkbox with custom colors
展示基础自定义颜色能力,便于做品牌化演示。
API
className 默认作用在原生 input 上;需要控制包裹层时,请使用 rootClassName 和 rootStyle。
Checkbox
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
checked | 受控选中状态 | boolean | - |
children | 传入后自动包裹 label,形成可点击说明区 | any | - |
className | 追加到原生 checkbox 输入元素 | string | - |
color | 语义颜色,映射到 checkbox-* 类名 | 'primary' | 'secondary' | 'accent' | 'neutral' | 'success' | 'warning' | 'info' | 'error' | - |
contentClassName | children 文本区的附加类名 | string | - |
defaultChecked | 非受控初始选中状态 | boolean | false |
disabled | 禁用状态 | boolean | false |
indeterminate | 半选态,内部同步到原生 DOM 的 indeterminate 属性 | boolean | false |
onChange | 状态变化回调,第二个参数会附带 checked 和 value | (event: Event, meta: CheckboxChangeMeta) => void | - |
onCheckedChange | 布尔值快捷回调 | (checked: boolean, event: Event) => void | - |
rootClassName | 外层容器类名,仅在包裹模式下生效 | string | - |
rootStyle | 外层容器样式,仅在包裹模式下生效 | CSSProperties | - |
size | 尺寸层级,映射到 checkbox-* 类名 | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | - |
value | 当前 checkbox 的值,参与 Checkbox.Group 收集 | string | number | boolean | - |
Checkbox.Group
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
children | 手动组合模式,可直接放入多个 Checkbox | any | - |
className | 分组容器类名,适合叠加 grid 或 flex 布局 | string | - |
defaultValue | 非受控默认选中值 | (string | number | boolean)[] | [] |
disabled | 禁用整个分组 | boolean | false |
name | 透传到组内 checkbox 的 name 属性 | string | - |
onChange | 选中值数组变化回调 | (checkedValue: (string | number | boolean)[]) => void | - |
options | 数据驱动写法,支持基础值数组或带 label/disabled 的对象数组 | (CheckboxOption | string | number | boolean)[] | [] |
style | 分组容器样式 | CSSProperties | - |
value | 受控选中值数组 | (string | number | boolean)[] | - |