Skip to content

Radio 单选框

浏览量:

Radio 单选框组件是基于 Element Plus 的 el-radioel-radio-group 组件封装而成,提供了更简洁的配置方式,支持通过 options 数组快速生成单选框组。

INFO

Radio 组件完全继承了 Element Plus Radio 组件的所有属性和事件,因此支持所有 Element Plus Radio 组件的功能。

注意

option配置的事件名统一约定为 'on[事件名]',例如:'onChange'等

基础用法

通过 options 数组配置选项,使用 v-model 进行双向绑定。

loading

组模式

通过 enable-group 属性启用组模式,组件会在外层包裹 el-radio-group,提供更好的语义和样式控制。组模式适合需要统一管理多个单选框的场景。

loading

属性说明

属性名类型默认值说明
optionsArray[]选项列表,每个选项是一个对象,详见下方 options 选项配置
modelValue / v-modelString | Number | Arrayundefined绑定值,当前选中的值,必须对应 options 中某个选项的 value
enableGroupBooleanfalse是否启用组模式,启用后会在外层包裹 el-radio-group,提供更好的语义和样式控制

options 选项配置

options 数组中的每个选项对象支持以下属性:

属性名类型必填说明
labelString选项的显示文本
valueString | Number选项的值,必须唯一,用于标识该选项
disabledBoolean是否禁用该选项,默认为 false
onChangeFunction该选项的 change 事件处理函数,接收选中的值作为参数
其他属性--支持透传 Element Plus el-radio 组件的所有属性(如 sizeborder 等)

TIP

  • options 中的 onChangechange 事件处理函数会接收 Element Plus 传递的完整参数
  • 除了上述属性外,options 中的每个选项对象还支持透传 Element Plus el-radio 组件的所有属性和事件
  • value 的值类型可以是字符串或数字,但必须与 modelValue 的类型保持一致

事件说明

事件名说明回调参数触发时机
change绑定值变化时触发的事件(value: String | Number) - 选中的值当用户选择不同的选项时触发
update:modelValue绑定值更新时触发(用于 v-model 双向绑定)(value: String | Number) - 新的值modelValue 值发生变化时触发,用于实现双向绑定

TIP

  • change 事件会在用户交互时触发,而 update:modelValue 事件会在值更新时触发(包括程序修改值的情况)
  • 组件级别的 @change 事件会在任何选项变化时触发
  • 选项级别的 onChange 事件只在该选项被选中时触发

注意事项

  1. 组模式 vs 非组模式

    • 非组模式enableGroup: false):每个 radio 独立管理,适合简单的单选场景,代码更简洁
    • 组模式enableGroup: true):使用 el-radio-group 包裹,提供更好的语义和样式控制,推荐在复杂场景中使用,特别是需要统一管理多个单选框时
  2. 值绑定

    • 使用 v-model 进行双向绑定,这是推荐的方式
    • modelValue 的值必须对应 options 中某个选项的 value
    • valuemodelValue 的类型必须保持一致(都是字符串或都是数字)
  3. 事件处理优先级

    • 选项对象中的事件处理函数(如 onChange)优先级最高
    • 如果选项对象中没有配置,则使用 dispatchEventCollector 中的事件处理函数
    • 组件级别的 @change 事件会在任何选项变化时触发,不受上述优先级影响
  4. 事件处理

    • 组件级别的 @change 事件会在任何选项变化时触发
    • 选项级别的 onChangechange 事件只在该选项被选中时触发
    • 所有事件处理函数都会接收 Element Plus 传递的完整参数
  5. Element Plus 兼容性

    • 组件完全兼容 Element Plus Radio 的所有功能和 API
    • 可以参考 Element Plus Radio 文档 了解更多高级用法
    • 支持透传 Element Plus el-radioel-radio-group 的所有属性和事件

最佳实践

  1. 使用 v-model 进行双向绑定:这是 Vue 3 推荐的方式,代码更简洁
  2. 统一值类型:建议在同一个组件中,所有选项的 value 使用相同的类型(都是字符串或都是数字)
  3. 合理使用组模式:在需要统一管理多个单选框时,使用组模式可以获得更好的体验
  4. 事件处理:根据实际需求选择使用选项级别的事件、组件级别的事件或事件分发收集器
  5. 性能优化:如果选项列表很大,考虑使用 v-memo 或虚拟滚动来优化性能