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

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

单选卡片

用于从列表中选择一个选项

源码组件库设计指南Ark

使用

import { RadioCard } from "@chakra-ui/react"
<RadioCard.Root>
  <RadioCard.Label />
  <RadioCard.Item>
    <RadioCard.ItemHiddenInput />
    <RadioCard.ItemControl>
      <RadioCard.ItemContent>
        <RadioCard.ItemText />
        <RadioCard.ItemDescription />
      </RadioCard.ItemContent>
      <RadioCard.ItemIndicator />
    </RadioCard.ItemControl>
  </RadioCard.Item>
</RadioCard.Root>
信息
如果您更喜欢封闭式组件组合,请查看下方代码片段

示例

描述

这是一个如何为单选卡片添加更多描述的示例。

尺寸

size 属性传递给 RadioCard.Root 组件以更改单选卡片的尺寸。

颜色

colorPalette 属性传递给 RadioCard.Root 组件以更改单选卡片的颜色。

变体

variant 属性传递给 RadioCard.Root 组件以更改单选卡片的视觉样式。

图标

通过将其放置在 RadioCard.ItemContent 中,可以在单选卡片内渲染自定义图标。

无指示器

这是一个不带指示器的单选卡片示例。

无指示器(垂直)

这是一个不带指示器且内容垂直对齐的单选卡片示例。

居中

这是一个文本居中的单选卡片示例。

组合

这是一个将单选卡片与 Group 组件组合的示例。

附加

使用 RadioCard.ItemAddon 组件向单选卡片添加元数据。

封闭组件

以下是如何为封闭组件组合设置单选卡片。

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

interface RadioCardItemProps extends RadioCard.ItemProps {
  icon?: React.ReactElement
  label?: React.ReactNode
  description?: React.ReactNode
  addon?: React.ReactNode
  indicator?: React.ReactNode | null
  indicatorPlacement?: "start" | "end" | "inside"
  inputProps?: React.InputHTMLAttributes<HTMLInputElement>
}

export const RadioCardItem = React.forwardRef<
  HTMLInputElement,
  RadioCardItemProps
>(function RadioCardItem(props, ref) {
  const {
    inputProps,
    label,
    description,
    addon,
    icon,
    indicator = <RadioCard.ItemIndicator />,
    indicatorPlacement = "end",
    ...rest
  } = props

  const hasContent = label || description || icon
  const ContentWrapper = indicator ? RadioCard.ItemContent : React.Fragment

  return (
    <RadioCard.Item {...rest}>
      <RadioCard.ItemHiddenInput ref={ref} {...inputProps} />
      <RadioCard.ItemControl>
        {indicatorPlacement === "start" && indicator}
        {hasContent && (
          <ContentWrapper>
            {icon}
            {label && <RadioCard.ItemText>{label}</RadioCard.ItemText>}
            {description && (
              <RadioCard.ItemDescription>
                {description}
              </RadioCard.ItemDescription>
            )}
            {indicatorPlacement === "inside" && indicator}
          </ContentWrapper>
        )}
        {indicatorPlacement === "end" && indicator}
      </RadioCard.ItemControl>
      {addon && <RadioCard.ItemAddon>{addon}</RadioCard.ItemAddon>}
    </RadioCard.Item>
  )
})

export const RadioCardRoot = RadioCard.Root
export const RadioCardLabel = RadioCard.Label
export const RadioCardItemIndicator = RadioCard.ItemIndicator

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

npx @chakra-ui/cli snippet add radio-card

以下是如何使用它

<RadioCardRoot>
  <RadioCardLabel />
  <RadioCardItem />
</RadioCardRoot>

属性

根组件

属性默认值类型
颜色调色板 '灰色'
'gray' | 'red' | 'orange' | 'yellow' | 'green' | 'teal' | 'blue' | 'cyan' | 'purple' | 'pink'

组件的颜色调色板

尺寸 'md'
'sm' | 'md' | 'lg'

组件的尺寸

变体 '轮廓'
'surface' | 'subtle' | 'outline' | 'solid'

组件的变体

对齐 '开始'
'start' | 'end' | 'center'

组件的对齐方式

方向 '水平'
'vertical' | 'horizontal'

组件的方向

对齐方式
'start' | 'end' | 'center'

组件的对齐方式

as
React.ElementType

要渲染的基础元素。

asChild
布尔值

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

了解更多详情,请阅读我们的 组合 指南。
无样式
布尔值

是否移除组件的样式。

上一页

二维码

下一页

单选框