Radio
概述
单选框组件,用于从多个候选项中选择一个。支持普通横排样式与卡片样式两种外观,候选项既可以是简单字符串,也可以是带 tips、icon、enable 等字段的对象。
示例
最简单的用法是给 choices 传入字符串数组,选中值就是字符串本身。
ts
const { configurable } = AutoStoreSpaces;
const form = document.querySelector('#form');
form.state = {
gender: configurable('male', {
label: '性别',
widget: 'radio',
choices: ['male', 'female'],
}),
};loading
指南
基础用法
候选项可以是对象数组,通过 valueKey 指定取值字段。label 为显示文本,状态值取 valueKey 指向的字段(未指定时取 label):
ts
form.state = {
certificate: configurable(1, {
label: '证件类型',
widget: 'radio',
choices: [
{ label: '身份证', value: 1 },
{ label: '护照', value: 2 },
{ label: '军官证', value: 3 },
],
}),
};卡片样式
设置 card: true 后选项以卡片形式展示,配合 itemWidth 控制卡片宽度(如 '33.33%' 三列排布)。对象选项的 tips 字段会显示为卡片内的说明文字:
ts
form.state = {
layout: configurable('经典式', {
label: '页面布局',
widget: 'radio',
card: true,
itemWidth: '33.33%',
choices: [
{ label: '简约风', tips: '极简设计,突出内容' },
{ label: '经典式', tips: '传统布局,平衡稳重' },
{ label: '卡片集', tips: '模块卡片,灵活组合' },
],
}),
};禁用选项
在候选项对象上设置 enable: false 可以禁用该选项,禁用的选项显示为灰色且不可点击:
ts
form.state = {
layout: configurable('经典式', {
label: '页面布局',
widget: 'radio',
choices: [
{ label: '简约风', tips: '极简设计,突出内容' },
{ label: '瀑布流', enable: false, tips: '动态滚动,视觉延展' },
{ label: '经典式', tips: '传统布局,平衡稳重' },
],
}),
};属性
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
choices | any[] | string[] | (() => any[] | Promise<any[]>) | 必填 | 候选项列表,或返回候选项的(异步)函数 |
valueKey | string | "value" | 候选项取值字段名 |
card | boolean | false | 是否显示为卡片样式 |
itemWidth | string | number | — | 选项宽度,如 '33.33%' |
注意事项
- 候选项配置键是
choices,旧版以select作为配置键的写法已废弃,继续使用会静默失效。 - 卡片模式下应指定
itemWidth属性,并控制好tips的长度,否则会出现卡片高度不一致的情况。 - 未设置
valueKey时选项取值回退到label字段,此时状态值是选项文本。