组件

复选框

一个允许用户在选中和未选中之间切换的控件。

import * as React from "react";
import { Checkbox } from "radix-ui";
import { CheckIcon } from "@radix-ui/react-icons";
import "./styles.css";
const CheckboxDemo = () => (
<form>
<div style={{ display: "flex", alignItems: "center" }}>
<Checkbox.Root className="CheckboxRoot" defaultChecked id="c1">
<Checkbox.Indicator className="CheckboxIndicator">
<CheckIcon />
</Checkbox.Indicator>
</Checkbox.Root>
<label className="Label" htmlFor="c1">
Accept terms and conditions.
</label>
</div>
</form>
);
export default CheckboxDemo;

特性

    支持不确定状态。

    完整的键盘导航。

    可以是受控的或非受控的。

安装

从命令行安装组件。

npm install @radix-ui/react-checkbox

解剖

导入所有部件并将它们组装在一起。

import { Checkbox } from "radix-ui";
export default () => (
<Checkbox.Root>
<Checkbox.Indicator />
</Checkbox.Root>
);

API 参考

包含复选框的所有部件。当在 form 中使用时,也会渲染一个 input,以确保事件正确传播。

属性类型默认值
asChild
布尔值
false
defaultChecked
boolean | 'indeterminate'
无默认值
checked
boolean | 'indeterminate'
无默认值
onCheckedChange
函数
无默认值
disabled
布尔值
无默认值
required
布尔值
无默认值
name
字符串
无默认值
value
字符串
on
数据属性
[data-state]"checked" |"unchecked" |"indeterminate"
[data-disabled]

禁用时存在

指示器

当复选框处于选中或不确定状态时渲染。您可以直接设置此元素的样式,或者您可以将其用作包装器来放入图标,或者两者都做。

属性类型默认值
asChild
布尔值
false
forceMount
布尔值
无默认值
数据属性
[data-state]"checked" |"unchecked" |"indeterminate"
[data-disabled]

禁用时存在

示例

不确定状态

您可以通过控制其状态将复选框设置为 indeterminate

import { DividerHorizontalIcon, CheckIcon } from "@radix-ui/react-icons";
import { Checkbox } from "radix-ui";
export default () => {
const [checked, setChecked] = React.useState("indeterminate");
return (
<>
<StyledCheckbox checked={checked} onCheckedChange={setChecked}>
<Checkbox.Indicator>
{checked === "indeterminate" && <DividerHorizontalIcon />}
{checked === true && <CheckIcon />}
</Checkbox.Indicator>
</StyledCheckbox>
<button type="button" onClick={() => setChecked((prevIsChecked) => prevIsChecked === "indeterminate" ? false : "indeterminate", ) } >
Toggle indeterminate
</button>
</>
);
};

可访问性

遵循 三态复选框 WAI-ARIA 设计模式

键盘交互

按键描述
空格键
选中/取消选中复选框。
上一个头像
下一个可折叠