Skip to content

单选列表

使用方法 ​

RadioList 是 RadioGroup 的便捷封装。它接收 options 数组,自动渲染一组单选按钮。

vue
<script setup lang="ts">
import { RadioList } from '@astryx-vue/core/Radio'
import { shallowRef } from 'vue'

const plan = shallowRef('team')
const options = [
  { value: 'free', label: 'Free', description: 'For personal projects.' },
  { value: 'team', label: 'Team', description: 'For small teams.' },
  { value: 'enterprise', label: 'Enterprise', description: 'For organizations.' },
]
</script>

<template>
  <RadioList v-model="plan" label="Plan" :options="options" />
</template>

最佳实践 ​

指引实践
推荐选项数量保持较少,通常为 2 到 7 个。
推荐使用清晰、简洁的标签,让每个选项一眼可辨。
避免需要多选时使用单选列表。应改用 CheckboxList。
避免用于长列表。应使用 Selector,便于查找。
避免超过 4 个选项时使用水平布局,排版会很别扭。
避免用 Tooltip 包裹禁用的 RadioList 来解释禁用原因。禁用的控件会吞掉包裹层需要的悬停事件。应改用 disabledMessage 属性。

示例 ​

基本用法

Plan

传入 options 数组即可渲染带说明的单选列表。

键盘与无障碍 ​

RadioList 内部把渲染工作交给 RadioGroup,所以键盘操作和 ARIA 结构与 RadioGroup 完全一致,在两者之间切换时不需要重新适应交互方式。

  • 整组渲染为一个 role="radiogroup" 容器,屏幕阅读器会按单选组的语义朗读它。
  • 每个选项的 ID 由组件自动生成,你不需要手动指定。
  • 组 label 是必填项,它是整组的无障碍名称,屏幕阅读器靠它说明这组选项在让人选什么。

使用建议 ​

选项结构简单、也不需要自定义布局时,优先使用 RadioList:它只接收一个 options 数组,就能把整组选项渲染出来。

需要自定义选项渲染,或者布局比较复杂时,改用 RadioGroup 并直接组合 Radio 子项。