Preview Updated 2026-05-10

Radio

Radio + RadioGroup pair — mutually exclusive selection with full keyboard support.

Basic usage

RadioGroup injects value, name, size, and disabled into its children via provide / Context. When any child becomes selected it fires update:modelValue / onChange.

已选:pro

<script setup lang="ts">
import { ref } from 'vue';
import { CfRadio, CfRadioGroup } from '@chufix-design/vue';

const plan = ref<'free' | 'pro' | 'team'>('pro');
</script>

<template>
<CfRadioGroup v-model="plan" name="plan">
  <CfRadio value="free">Free</CfRadio>
  <CfRadio value="pro">Pro</CfRadio>
  <CfRadio value="team">Team</CfRadio>
</CfRadioGroup>
</template>
import { useState } from 'react';
import { CfRadio, CfRadioGroup } from '@chufix-design/react';

export default function Demo() {
const [plan, setPlan] = useState<'free' | 'pro' | 'team'>('pro');
return (
  <CfRadioGroup value={plan} name="plan" onChange={(v) => setPlan(v as any)}>
    <CfRadio value="free">Free</CfRadio>
    <CfRadio value="pro">Pro</CfRadio>
    <CfRadio value="team">Team</CfRadio>
  </CfRadioGroup>
);
}

Layout direction

direction="column" lays the options out vertically. Useful when you have many options or longer labels.

<CfRadioGroup v-model="flavor" direction="column">
<CfRadio value="vanilla">Vanilla</CfRadio>
<CfRadio value="chocolate">Chocolate</CfRadio>
<CfRadio value="strawberry" disabled>Strawberry (out of stock)</CfRadio>
<CfRadio value="matcha">Matcha</CfRadio>
</CfRadioGroup>
<CfRadioGroup value={flavor} direction="column" onChange={setFlavor}>
<CfRadio value="vanilla">Vanilla</CfRadio>
<CfRadio value="chocolate">Chocolate</CfRadio>
<CfRadio value="strawberry" disabled>Strawberry (out of stock)</CfRadio>
<CfRadio value="matcha">Matcha</CfRadio>
</CfRadioGroup>

Sizes

Set size on RadioGroup to apply it to every child.

<CfRadioGroup size="sm" v-model="a">
<CfRadio value="s">Small</CfRadio>
<CfRadio value="t">Tiny</CfRadio>
</CfRadioGroup>
<CfRadioGroup size="md" v-model="b">…</CfRadioGroup>
<CfRadioGroup size="lg" v-model="c">…</CfRadioGroup>
<CfRadioGroup size="sm" value={a} onChange={setA}>
<CfRadio value="s">Small</CfRadio>
<CfRadio value="t">Tiny</CfRadio>
</CfRadioGroup>

API

RadioGroup

PropTypeDefaultDescription
valuestring | number | boolean | nullnullCurrently selected value
namestringForwarded to the underlying input for form submission
size'sm' | 'md' | 'lg''md'Group size
disabledbooleanfalseDisable the whole group
direction'row' | 'column''row'Layout direction

Radio

PropTypeDefaultDescription
valuestring | number | boolean | nullThe item’s value
disabledbooleanfalseDisable this item only (combined with RadioGroup.disabled)

Radio can also be used standalone outside a RadioGroup, managing its own v-model / checked + onChange.

反馈与讨论

Radio · Discussion

0
0 / 600
一键发送
正在加载评论...