120k

单选按钮组

一组可选中的按钮(称为单选按钮),同一时间最多只能选中其中一个按钮。

import { Label } from "@/components/ui/label"
import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"

安装

pnpm dlx shadcn@latest add radio-group

用法

import { Label } from "@/components/ui/label"
import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"
<RadioGroup defaultValue="option-one">
  <div className="flex items-center gap-3">
    <RadioGroupItem value="option-one" id="option-one" />
    <Label htmlFor="option-one">选项一</Label>
  </div>
  <div className="flex items-center gap-3">
    <RadioGroupItem value="option-two" id="option-two" />
    <Label htmlFor="option-two">选项二</Label>
  </div>
</RadioGroup>

组合

使用以下组合构建一个 RadioGroup

RadioGroup
├── RadioGroupItem
└── RadioGroupItem

描述

使用 Field 组件为单选按钮组项目添加描述。

Standard spacing for most use cases.

More space between elements.

Minimal spacing for dense layouts.

import {
  Field,
  FieldContent,

选择卡片

使用 FieldLabel 包裹整个 Field,以实现可点击的卡片式选择。

import {
  Field,
  FieldContent,

字段集

使用 FieldSetFieldLegend 将单选项与标签和描述分组。

Subscription Plan

Yearly and lifetime plans offer significant savings.

import {
  Field,
  FieldDescription,

已禁用

RadioGroup 上使用 isDisabled 属性可禁用所有选项。

import { Field, FieldLabel } from "@/components/ui/field"
import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"

无效

RadioGroupItem 上使用 isInvalid,在 Field 上使用 data-invalid,以显示验证错误。

Notification Preferences

Choose how you want to receive notifications.

import {
  Field,
  FieldDescription,

RTL

要在 shadcn/ui 中启用 RTL 支持,请参阅 RTL 配置指南

تباعد قياسي لمعظم حالات الاستخدام.

مساحة أكبر بين العناصر.

تباعد أدنى للتخطيطات الكثيفة.

"use client"

import * as React from "react"

API 参考

请参阅 React Aria Radio Group 文档。