React 组件

UGCheckbox 复选框

UGCheckbox 用于在表单中进行多项选择,支持受控/非受控模式、indeterminate 半选状态与三种尺寸。

导入方式

按需从包入口导入组件,并在应用入口引入一次样式文件。

tsx
import { UGCheckbox, UGCheckboxGroup } from '@ug666/ui-react'

基础勾选

最基础的复选框,携带标签并受控绑定选中状态。

indeterminate 半选

父级复选框在子项部分选中时呈现半选中状态(Minus 图标),全选时呈现选中状态。

复选框组

组统一维护选中值、字段名、尺寸和禁用状态,并可限制最少与最多选择数量。

当前值:read

状态

禁用后不可交互;aria-invalid 同步无障碍语义和可见错误边框。

三种尺寸

sm / default / lg 三档尺寸适配不同密度界面。

原生表单

组统一传递 name 和 form;非受控值在 reset 后恢复 defaultValue。

完整场景代码

全选与子项联动的完整状态管理示例。

tsx
import { useState } from 'react'
import { UGCheckbox } from '@ug666/ui-react'

export function TaskList() {
  const [items, setItems] = useState([
    { id: 1, label: '设计稿评审', checked: true },
    { id: 2, label: '接口联调', checked: false },
    { id: 3, label: '内容复核', checked: false },
  ])

  const allChecked = items.every((i) => i.checked)
  const someChecked = items.some((i) => i.checked) && !allChecked

  function toggleAll() {
    setItems((prev) => prev.map((i) => ({ ...i, checked: !allChecked })))
  }

  function toggle(id: number) {
    setItems((prev) =>
      prev.map((i) => (i.id === id ? { ...i, checked: !i.checked } : i)),
    )
  }

  return (
    <div className="space-y-2">
      <UGCheckbox
        checked={allChecked}
        indeterminate={someChecked}
        onCheckedChange={toggleAll}
        label="全选任务"
      />
      <div className="ml-6 space-y-1.5">
        {items.map((item) => (
          <UGCheckbox
            key={item.id}
            checked={item.checked}
            onCheckedChange={() => toggle(item.id)}
            label={item.label}
          />
        ))}
      </div>
    </div>
  )
}

属性

Checkbox 属性

属性类型默认值说明
checkedbooleanfalse是否选中(受控)。
defaultCheckedbooleanfalse非受控模式的初始选中状态。
indeterminatebooleanfalse半选状态,优先级高于 checked 的视觉表现。
onCheckedChange(checked: boolean) => void选中状态变化时触发。
onChangeChangeEventHandler<HTMLInputElement>原生 change 事件,供表单库和事件型接入使用。
labelReactNode同行标签文案,有值时整块可点击。
size'sm' | 'default' | 'lg''default'控制复选框尺寸。
disabledbooleanfalse禁用点击与焦点交互。
aria-invalid原生 ARIA 属性表单校验失败时同步无障碍语义和危险色边框。
valuestring | number作为 CheckboxGroup 子项时的选项值。
name / required原生 input 属性— / false参与原生表单提交和校验。
refRef<HTMLInputElement>访问真实 checkbox,可调用 focus、blur 和原生属性。

CheckboxGroup 属性

属性类型默认值说明
value / defaultValuereadonly (string | number)[][]受控选中值或非受控初始值。
onValueChange(value: (string | number)[]) => void组内选中值变化时触发。
min / maxnumber0 / —限制最少与最多选中数量,达到边界后对应选项不可操作。
orientation'horizontal' | 'vertical''horizontal'控制组内选项排列方向。
name / formstring / string传递原生字段名,并可关联指定 id 的外部 form。
size'sm' | 'default' | 'lg'ConfigProvider / default统一组内复选框尺寸,子项可以覆盖。
disabledbooleanConfigProvider / false禁用整组复选框。