• Vant React

Radio 单选框

介绍

在一组备选项中进行单选。

引入

import { Radio } from "@taroify/core";

代码演示

基础用法

通过 value 绑定值当前选中项的 name。

<Radio.Group defaultValue="1">
  <Radio name="1">单选框 1</Radio>
  <Radio name="2">单选框 2</Radio>
</Radio.Group>

水平排列

direction 属性设置为 horizontal 后,单选框组会变成水平排列。

<Radio.Group defaultValue="1" direction="horizontal">
  <Radio name="1">单选框 1</Radio>
  <Radio name="2">单选框 2</Radio>
</Radio.Group>

禁用状态

通过 disabled 属性禁止选项切换,在 Radio 上设置 disabled 可以禁用单个选项。

<Radio.Group defaultValue="1" disabled>
  <Radio name="1">单选框 1</Radio>
  <Radio name="2">单选框 2</Radio>
</Radio.Group>

自定义形状

shape 属性设置为 square,单选框的形状会变成方形。

<Radio.Group defaultValue="1">
  <Radio name="1" shape="square">
    单选框 1
  </Radio>
  <Radio name="2" shape="square">
    单选框 2
  </Radio>
</Radio.Group>

自定义颜色

通过 css 属性设置选中状态的图标颜色。

<Radio.Group className="custom-color" defaultValue="1">
  <Radio name="1">单选框 1</Radio>
  <Radio name="2">单选框 2</Radio>
</Radio.Group>
.custom-color {
  --radio-checked-icon-background-color: #ee0a24;
  --radio-checked-icon-border-color: #ee0a24;
}

自定义大小

通过 size 属性可以自定义图标的大小。

<Radio.Group defaultValue="1" size={24}>
  <Radio name="1">单选框 1</Radio>
  <Radio name="2">单选框 2</Radio>
</Radio.Group>

自定义图标

通过 icon 属性自定义图标。

function CustomIconRadio() {
  const [value, setValue] = useState("1")
  return (
    <Radio.Group value={value} onChange={setValue}>
      <Radio
        name="1"
        icon={
          <Image
            src={`https://img.yzcdn.cn/vant/user-${value === "1" ? "active" : "inactive"}.png`}
            style={{
              width: "25px",
              height: "20px",
            }}
          />
        }
      >
        单选框 1
      </Radio>
      <Radio
        name="2"
        icon={
          <Image
            src={`https://img.yzcdn.cn/vant/user-${value === "2" ? "active" : "inactive"}.png`}
            style={{
              width: "25px",
              height: "20px",
            }}
          />
        }
      >
        单选框 1
      </Radio>
    </Radio.Group>
  )
}

与 Cell 组件一起使用

此时你需要再引入 CellCell.Group 组件。

<Radio.Group defaultValue="1">
  <Cell.Group clickable>
    <Cell title="单选框 1">
      <Radio name="1" />
    </Cell>
    <Cell title="单选框 2">
      <Radio name="2" />
    </Cell>
  </Cell.Group>
</Radio.Group>

API

Radio Props

参数说明类型默认值
name标识符any-
shape形状,可选值为 squarestringround
disabled是否为禁用状态booleanfalse
size图标大小,默认单位为pxnumber | string20px

Radio.Group Props

参数说明类型默认值
defaultValue默认选中项的标识符any-
value当前选中项的标识符any-
disabled是否禁用所有单选框booleanfalse
direction排列方向,可选值为horizontalstringvertical
size所有单选框的图标大小,默认单位为pxnumber | string20px

Radio.Group Events

事件名说明回调参数
onChange当绑定值变化时触发的事件name: string

主题定制

样式变量

组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 ConfigProvider 组件。

名称默认值描述
—radio-size20px * $hd-
—radio-font-sizevar(—font-size-lg)-
—radio-border-colorvar(—gray-5)-
—radio-transition-durationvar(—animation-duration-fast)-
—radio-gapvar(—padding-sm)-
—radio-label-marginvar(—padding-xs)-
—radio-label-colorvar(—text-color)-
—radio-label-line-heightvar(—radio-size)-
—radio-disabled-label-colorvar(—gray-5)-
—radio-icon-font-sizevar(—radio-size)-
—radio-checked-icon-colorvar(—white)-
—radio-checked-icon-border-colorvar(—primary-color)-
—radio-checked-icon-background-colorvar(—primary-color)-
—radio-disabled-icon-colorvar(—gray-5)-
—radio-disabled-icon-border-colorvar(—gray-5)-
—radio-disabled-icon-background-colorvar(—border-color)-