在一组数据中,用户可通过多选框选择一个或多个数据。

演示

import { Checkbox } from "@resolid/react-ui";

export default function App() {
  return <Checkbox>多选框</Checkbox>;
}

用法

import { Checkbox, CheckboxGroup } from "@resolid/react-ui";

特点

  • 由本机 HTML <input> 元素构建,该元素在视觉上隐藏以允许自定义样式。
  • 支持不确定状态。
  • 完整的键盘导航。
  • 可以是受控的,也可以是不受控的。

举例

默认值

使用 defaultChecked 属性来设置多选框的默认状态。

import { Checkbox } from "@resolid/react-ui";

export default function App() {
  return <Checkbox defaultChecked>多选框</Checkbox>;
}

可控值

使用 checkedonChange 属性来控制多选框的状态。

你取消了订阅

import { Checkbox } from "@resolid/react-ui";
import { useState } from "react";

export default function App() {
  const [checked, setChecked] = useState(false);

  return (
    <div className={"flex flex-col gap-2"}>
      <p>{checked ? <span className={"text-fg-success"}>你已成功订阅</span> : "你取消了订阅"}</p>
      <Checkbox value={"on"} checked={checked} onChange={setChecked}>
        订阅更新
      </Checkbox>
    </div>
  );
}

多选框组

使用 CheckboxGroup 组件将多个多选框分组在一起。

你选择了框架: React

import { Checkbox, CheckboxGroup } from "@resolid/react-ui";
import { useState } from "react";

export default function App() {
  const [value, setValue] = useState(["React"]);

  return (
    <div className={"flex flex-col gap-2"}>
      <p>你选择了框架: {value.join(", ")}</p>
      <CheckboxGroup value={value} onChange={setValue} className={"gap-5"}>
        <Checkbox value={"React"}>React</Checkbox>
        <Checkbox value={"Angular"}>Angular</Checkbox>
        <Checkbox value={"Vue"}>Vue</Checkbox>
        <Checkbox value={"SolidJS"}>SolidJS</Checkbox>
        <Checkbox value={"Svelte"}>Svelte</Checkbox>
      </CheckboxGroup>
    </div>
  );
}

部分选中

设置 indeterminate 属性以在不确定状态下显示复选框。

import { Checkbox } from "@resolid/react-ui";
import { useState } from "react";

export default function App() {
  const [values, setValues] = useState([false, false, false, false, false]);

  const allChecked = values.every(Boolean);
  const isIndeterminate = values.some(Boolean) && !allChecked;

  return (
    <div className={"flex flex-col gap-2"}>
      <Checkbox
        checked={allChecked}
        indeterminate={isIndeterminate}
        onChange={(checked) => setValues([checked, checked, checked, checked, checked])}
      >
        工作日
      </Checkbox>
      <div className={"inline-flex flex-row gap-5"}>
        {["周一", "周二", "周三", "周四", "周五"].map((day, index) => (
          <Checkbox
            key={day}
            checked={values[index]}
            onChange={(checked) => {
              setValues((prev) => {
                return [...prev.slice(0, index), !!checked, ...prev.slice(index + 1)];
              });
            }}
          >
            {day}
          </Checkbox>
        ))}
      </div>
    </div>
  );
}

属性

Checkbox

属性color简介

颜色

类型"primary" | "secondary" | "success" | "warning" | "danger" | "neutral"默认值"primary"必须false
属性size简介

大小

类型"xs" | "sm" | "md" | "lg" | "xl"默认值"md"必须false
属性indeterminate简介

部分选中

类型boolean默认值false必须false
属性spacing简介

间距

类型string | number默认值"0.5em"必须false
属性value简介

类型string | number默认值-必须false
属性checked简介

可控值

类型boolean默认值-必须false
属性defaultChecked简介

默认值

类型boolean默认值false必须false
属性onChange简介

onChange 回调

类型(checked: boolean) => void默认值-必须false
属性name简介

字段的名称, 提交表单时使用

类型string默认值-必须false
属性disabled简介

是否禁用

类型boolean默认值false必须false
属性required简介

是否必需

类型boolean默认值false必须false
属性readOnly简介

是否只读

类型boolean默认值false必须false
属性invalid简介

是否无效

类型boolean默认值false必须false

CheckboxGroup

属性orientation简介

方向

类型"horizontal" | "vertical"默认值'horizontal'必须false
属性color简介

颜色

类型"primary" | "secondary" | "success" | "warning" | "danger" | "neutral"默认值"primary"必须false
属性size简介

大小

类型"xs" | "sm" | "md" | "lg" | "xl"默认值"md"必须false
属性value简介

可控值

类型(string | number)[]默认值-必须false
属性defaultValue简介

默认值

类型(string | number)[]默认值-必须false
属性onChange简介

onChange 回调

类型((value: (string | number)[]) => void)默认值-必须false
属性name简介

字段的名称, 提交表单时使用

类型string默认值-必须false
属性disabled简介

是否禁用

类型boolean默认值false必须false
属性required简介

是否必需

类型boolean默认值false必须false
属性readOnly简介

是否只读

类型boolean默认值false必须false

建议更改此页面