Appearance
Radio 单选框组件是基于 Element Plus 的 el-radio 和 el-radio-group 组件封装而成,提供了更简洁的配置方式,支持通过 options 数组快速生成单选框组。
INFO
Radio 组件完全继承了 Element Plus Radio 组件的所有属性和事件,因此支持所有 Element Plus Radio 组件的功能。
注意
option配置的事件名统一约定为 'on[事件名]',例如:'onChange'等
基础用法
通过 options 数组配置选项,使用 v-model 进行双向绑定。
loading
组模式
通过 enable-group 属性启用组模式,组件会在外层包裹 el-radio-group,提供更好的语义和样式控制。组模式适合需要统一管理多个单选框的场景。
loading
属性说明
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
options | Array | [] | 选项列表,每个选项是一个对象,详见下方 options 选项配置 |
modelValue / v-model | String | Number | Array | undefined | 绑定值,当前选中的值,必须对应 options 中某个选项的 value |
enableGroup | Boolean | false | 是否启用组模式,启用后会在外层包裹 el-radio-group,提供更好的语义和样式控制 |
options 选项配置
options 数组中的每个选项对象支持以下属性:
| 属性名 | 类型 | 必填 | 说明 |
|---|---|---|---|
label | String | 是 | 选项的显示文本 |
value | String | Number | 是 | 选项的值,必须唯一,用于标识该选项 |
disabled | Boolean | 否 | 是否禁用该选项,默认为 false |
onChange | Function | 否 | 该选项的 change 事件处理函数,接收选中的值作为参数 |
| 其他属性 | - | - | 支持透传 Element Plus el-radio 组件的所有属性(如 size、border 等) |
TIP
options中的onChange或change事件处理函数会接收 Element Plus 传递的完整参数- 除了上述属性外,
options中的每个选项对象还支持透传 Element Plusel-radio组件的所有属性和事件 value的值类型可以是字符串或数字,但必须与modelValue的类型保持一致
事件说明
| 事件名 | 说明 | 回调参数 | 触发时机 |
|---|---|---|---|
change | 绑定值变化时触发的事件 | (value: String | Number) - 选中的值 | 当用户选择不同的选项时触发 |
update:modelValue | 绑定值更新时触发(用于 v-model 双向绑定) | (value: String | Number) - 新的值 | 当 modelValue 值发生变化时触发,用于实现双向绑定 |
TIP
change事件会在用户交互时触发,而update:modelValue事件会在值更新时触发(包括程序修改值的情况)- 组件级别的
@change事件会在任何选项变化时触发 - 选项级别的
onChange事件只在该选项被选中时触发
注意事项
组模式 vs 非组模式:
- 非组模式(
enableGroup: false):每个 radio 独立管理,适合简单的单选场景,代码更简洁 - 组模式(
enableGroup: true):使用el-radio-group包裹,提供更好的语义和样式控制,推荐在复杂场景中使用,特别是需要统一管理多个单选框时
- 非组模式(
值绑定:
- 使用
v-model进行双向绑定,这是推荐的方式 modelValue的值必须对应options中某个选项的value值value和modelValue的类型必须保持一致(都是字符串或都是数字)
- 使用
事件处理优先级:
- 选项对象中的事件处理函数(如
onChange)优先级最高 - 如果选项对象中没有配置,则使用
dispatchEventCollector中的事件处理函数 - 组件级别的
@change事件会在任何选项变化时触发,不受上述优先级影响
- 选项对象中的事件处理函数(如
事件处理:
- 组件级别的
@change事件会在任何选项变化时触发 - 选项级别的
onChange或change事件只在该选项被选中时触发 - 所有事件处理函数都会接收 Element Plus 传递的完整参数
- 组件级别的
Element Plus 兼容性:
- 组件完全兼容 Element Plus Radio 的所有功能和 API
- 可以参考 Element Plus Radio 文档 了解更多高级用法
- 支持透传 Element Plus
el-radio和el-radio-group的所有属性和事件
最佳实践
- 使用
v-model进行双向绑定:这是 Vue 3 推荐的方式,代码更简洁 - 统一值类型:建议在同一个组件中,所有选项的
value使用相同的类型(都是字符串或都是数字) - 合理使用组模式:在需要统一管理多个单选框时,使用组模式可以获得更好的体验
- 事件处理:根据实际需求选择使用选项级别的事件、组件级别的事件或事件分发收集器
- 性能优化:如果选项列表很大,考虑使用
v-memo或虚拟滚动来优化性能