使用高级 Chakra UI 组件更快地构建 💎

了解更多
跳到内容
文档演练场指南博客
赞助商

复选框

当用户需要从多个选项中选择多个值时,在表单中使用。

源码Storybook配方Ark

用法

import { Checkbox } from "@chakra-ui/react"
<Checkbox.Root>
  <Checkbox.HiddenInput />
  <Checkbox.Control>
    <Checkbox.Indicator />
  </Checkbox.Control>
  <Checkbox.Label />
</Checkbox.Root>
信息
如果您更喜欢封闭式组件组合,请查看以下代码片段

快捷方式

Checkbox 组件还提供了一组用于常见用例的快捷方式。

CheckboxControl

此组件默认在其内部渲染 Checkbox.Indicator

这有效

<Checkbox.Control>
  <Checkbox.Indicator />
</Checkbox.Control>

如果您不需要自定义指示器,这可能更简洁

<Checkbox.Control />

示例

变体

variant 属性传递给 Checkbox.Root 组件以改变复选框的视觉样式。

描边

柔和

实心

颜色

colorPalette 属性传递给 Checkbox.Root 组件以改变复选框的颜色。

灰色

红色

绿色

蓝色

蓝绿色

粉色

紫色

青色

橙色

黄色

尺寸

size 属性传递给 Checkbox.Root 组件以改变复选框的尺寸。

状态

disabledinvalid 属性传递给 Checkbox.Root 组件以改变复选框的视觉状态。

受控

使用 checkedonCheckedChange 属性来控制复选框的状态。

标签位置

这是一个如何将标签位置更改为右侧的示例。

状态存储

控制复选框的另一种方法是使用 RootProvider 组件和 useCheckbox 状态存储 Hook。

通过这种方式,您可以从复选框外部访问复选框的状态和方法。

组合

这是一个如何将复选框与字段组件组合的示例。

Hook 表单

这是一个如何将 Checkbox 组件与 react-hook-form 库一起使用的示例。

已选中false

分组

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

选择框架

分组 Hook 表单

这是一个如何将 CheckboxGroup 组件与 react-hook-form 库一起使用的示例。

选择你的框架
[]

自定义图标

Checkbox.Control 中渲染自定义图标以改变复选框的图标。

半选状态

checked 属性设置为 indeterminate 以将复选框显示为半选状态。

描述

这是一个如何为复选框添加更多描述的示例。

Checkbox.Label 中渲染一个锚点标签,为标签添加链接。

封闭组件

以下是如何为封闭式组件组合设置 Checkbox。

import { Checkbox as ChakraCheckbox } from "@chakra-ui/react"
import * as React from "react"

export interface CheckboxProps extends ChakraCheckbox.RootProps {
  icon?: React.ReactNode
  inputProps?: React.InputHTMLAttributes<HTMLInputElement>
  rootRef?: React.RefObject<HTMLLabelElement | null>
}

export const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(
  function Checkbox(props, ref) {
    const { icon, children, inputProps, rootRef, ...rest } = props
    return (
      <ChakraCheckbox.Root ref={rootRef} {...rest}>
        <ChakraCheckbox.HiddenInput ref={ref} {...inputProps} />
        <ChakraCheckbox.Control>
          {icon || <ChakraCheckbox.Indicator />}
        </ChakraCheckbox.Control>
        {children != null && (
          <ChakraCheckbox.Label>{children}</ChakraCheckbox.Label>
        )}
      </ChakraCheckbox.Root>
    )
  },
)

如果您想自动将封闭组件添加到您的项目中,请运行此命令

npx @chakra-ui/cli snippet add checkbox

以下是如何使用它

<Checkbox>Accept terms and conditions</Checkbox>

属性

属性默认值类型
value '\'on\''
string

复选框输入的值。常用于表单提交。

colorPalette 'gray'
'gray' | 'red' | 'orange' | 'yellow' | 'green' | 'teal' | 'blue' | 'cyan' | 'purple' | 'pink'

组件的调色板

size 'md'
'xs' | 'sm' | 'md' | 'lg'

组件的尺寸

variant 'solid'
'outline' | 'solid' | 'subtle'

组件的变体

asChild
boolean

使用提供的子元素作为默认渲染元素,结合它们的属性和行为。

有关更多详细信息,请阅读我们的 组合 指南。
checked
CheckedState

复选框的选中状态

defaultChecked
CheckedState

复选框首次渲染时的选中状态。当您不需要控制复选框状态时使用此属性。

disabled
boolean

复选框是否禁用

form
string

复选框所属表单的ID。

id
string

该组件的唯一标识符。

ids
Partial<{ root: string hiddenInput: string control: string label: string }>

复选框中元素的ID。常用于组合。

invalid
boolean

复选框是否无效

name
string

复选框中输入字段的名称。常用于表单提交。

onCheckedChange
(details: CheckedChangeDetails) => void

选中状态改变时调用的回调函数。

readOnly
boolean

复选框是否只读

required
boolean

复选框是否必填

as
React.ElementType

要渲染的底层元素。

unstyled
boolean

是否移除组件的样式。

上一个

Checkbox Card

下一个

Clipboard