JGuang

多选框

Checkbox · Ant Design

交互预览
npm install antd@6.6.5 @ant-design/icons@6.3.4 dayjs@1.11.23

多选框

收集用户的多项选择。

何时使用

  • 在一组可选项中进行多项选择时;
  • 单独使用可以表示两种状态之间的切换,和 switch 类似。区别在于切换 switch 会直接触发状态改变,而 checkbox 一般用于状态标记,需要和提交操作配合。

代码演示

  • 基本用法 · basic
  • 不可用 · disabled
  • 受控的 Checkbox · controller
  • Checkbox 组 · group
  • 全选 · check-all
  • 布局 · layout
  • 自定义语义结构的样式和类 · style-class

API

通用属性参考:通用属性

Checkbox

参数说明类型默认值版本全局配置
checked指定当前是否选中booleanfalse×
classNames用于自定义组件内部各语义化结构的 class,支持对象或函数Record<SemanticDOM, string> | (info: { props })=> Record<SemanticDOM, string>-6.0.0
defaultChecked初始是否选中booleanfalse×
disabled失效状态booleanfalse×
indeterminate设置 indeterminate 状态,只负责样式控制booleanfalse×
onChange变化时的回调函数(e: CheckboxChangeEvent) => void-×
onBlur失去焦点时的回调function()-×
onFocus获得焦点时的回调function()-×
styles用于自定义组件内部各语义化结构的行内 style,支持对象或函数Record<SemanticDOM, CSSProperties> | (info: { props })=> Record<SemanticDOM, CSSProperties>-6.0.0

Checkbox.Group

参数说明类型默认值版本
defaultValue默认选中的选项(string | number)[][]
disabled整组失效booleanfalse
nameCheckboxGroup 下所有 input[type="checkbox"] 的 name 属性string-
options指定可选项string[] | number[] | Option[][]
value指定选中的选项(string | number | boolean)[][]
title选项的 titlestring-
className选项的类名string-5.25.0
style选项的样式React.CSSProperties-
onChange变化时的回调函数(checkedValue: T[]) => void-
Option
interface Option {
  label: string;
  value: string;
  disabled?: boolean;
}

方法

Checkbox

名称描述版本
blur()移除焦点
focus()获取焦点
nativeElement返回 Checkbox 的 DOM 节点5.17.3

Semantic DOM

语义节点原生说明版本
root根元素,包含行内 flex 布局、基线对齐、光标样式、重置样式等复选框容器的基础样式6.0.0
icon选中框元素,包含尺寸、方向、背景色、边框、圆角、过渡动画,以及选中状态的勾选标记样式6.0.0
label文本元素,包含文本的内边距和与复选框的间距样式6.0.0

语义说明来源: vendor/components/checkbox/demo/_semantic.tsx

主题变量(Design Token)

类型、继承关系和原生令牌声明保持固定源码原文;默认值由原生主题计算,并可能受 ConfigProvider 覆盖。本表不伪造静态默认值。

原生 ComponentToken 未声明可直接提取的自有字段;共享令牌或继承关系以以下声明为准。

声明来源: vendor/components/checkbox/style/index.ts

import { unit } from '@ant-design/cssinjs';

import { genFocusOutline, resetComponent } from '../../style';

import { genNoMotionRawStyle, genNoMotionStyle } from '../../style/motion';

import type { FullToken, GenerateStyle } from '../../theme/internal';

import { genStyleHooks, mergeToken } from '../../theme/internal';

// biome-ignore lint/suspicious/noEmptyInterface: ComponentToken need to be empty by default
export interface ComponentToken {}

/**
 * @desc Checkbox 组件的 Token
 * @descEN Token for Checkbox component
 */
interface CheckboxToken extends FullToken<'Checkbox'> {
  /**
   * @desc Checkbox 类名
   * @descEN Checkbox class name
   */
  checkboxCls: string;
  /**
   * @desc Checkbox 尺寸
   * @descEN Size of Checkbox
   */
  checkboxSize: number;
}

FAQ

为什么在 Form.Item 下不能绑定数据?

Form.Item 默认绑定值属性到 value 上,而 Checkbox 的值属性为 checked。你可以通过 valuePropName 来修改绑定的值属性。

<Form.Item name="fieldA" valuePropName="checked">
  <Checkbox />
</Form.Item>

原生通用属性

Tips: 以下通用属性适用于 antd 大部分组件,不支持的组件会单独说明。

参数说明类型默认值
style自定义样式CSSProperties-
className自定义类名string-
rootClassName添加在组件最外层的 classNamestring-
autoFocus自动获取焦点,仅对表单类、链接、交互容器等可聚焦元素生效booleanfalse

安装并复现示例

npm install antd@6.6.5 @ant-design/icons@6.3.4 dayjs@1.11.23

使用 ConfigProvider 和原生 App,并单独配置 dayjs 语言。每个示例在查看代码中列出完整源码文件和额外固定依赖。示例名称用于选择演示,不是组件通用属性。主题、语言与 SSR 初始化见资源安装指南。

原生类型参考

源码查看器包含未修改的原生实现和以下声明文件,继承类型仍位于原生包中。代码中的英文注释保留为源码参考。

  • vendor/components/checkbox/Checkbox.tsx
  • vendor/components/checkbox/Group.tsx
  • vendor/components/checkbox/GroupContext.ts
  • vendor/components/checkbox/index.tsx
  • vendor/components/checkbox/style/index.ts

来源与许可

https://github.com/ant-design/ant-design/tree/4a39f54842eade4e565ab336ef6097cd7e723cdd

保留原生中英文正文与可执行示例;官网专用的嵌入章节和令牌表格在本地展开。Ant Design 使用 MIT 许可,另列依赖的许可证也需保留。上传预览禁止向外发起请求,不提供后端服务。