当前位置:首页 > VUE

vue radio组件实现

2026-03-28 13:26:04VUE

Vue Radio 组件实现

在 Vue 中实现单选按钮(Radio)组件可以通过原生 HTML 结合 Vue 的数据绑定,或者使用第三方 UI 库(如 Element UI、Vuetify 等)。以下是两种常见实现方式:

原生 HTML + Vue 实现

通过 v-model 绑定单选按钮的值,确保同一组 Radio 的 name 属性一致:

<template>
  <div>
    <label>
      <input 
        type="radio" 
        v-model="selectedOption" 
        name="options" 
        value="option1"
      >
      Option 1
    </label>
    <label>
      <input 
        type="radio" 
        v-model="selectedOption" 
        name="options" 
        value="option2"
      >
      Option 2
    </label>
    <p>Selected: {{ selectedOption }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      selectedOption: ''
    };
  }
};
</script>

使用 Element UI 的 Radio 组件

若项目中使用 Element UI,可以直接使用其封装好的 el-radio 组件:

<template>
  <div>
    <el-radio-group v-model="selectedOption">
      <el-radio label="option1">Option 1</el-radio>
      <el-radio label="option2">Option 2</el-radio>
    </el-radio-group>
    <p>Selected: {{ selectedOption }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      selectedOption: ''
    };
  }
};
</script>

自定义 Radio 组件

如果需要高度定制化的 Radio 组件,可以封装一个可复用的组件:

<!-- CustomRadio.vue -->
<template>
  <label class="custom-radio">
    <input 
      type="radio" 
      :checked="isChecked" 
      @change="$emit('change', value)" 
      :value="value"
    >
    <span class="radio-label">{{ label }}</span>
  </label>
</template>

<script>
export default {
  model: {
    prop: 'modelValue',
    event: 'change'
  },
  props: {
    label: String,
    value: [String, Number],
    modelValue: [String, Number]
  },
  computed: {
    isChecked() {
      return this.modelValue === this.value;
    }
  }
};
</script>

<style>
.custom-radio {
  display: flex;
  align-items: center;
  cursor: pointer;
}
</style>

使用自定义组件:

vue radio组件实现

<template>
  <div>
    <custom-radio 
      v-model="selectedOption" 
      label="Option 1" 
      value="option1"
    />
    <custom-radio 
      v-model="selectedOption" 
      label="Option 2" 
      value="option2"
    />
    <p>Selected: {{ selectedOption }}</p>
  </div>
</template>

<script>
import CustomRadio from './CustomRadio.vue';

export default {
  components: { CustomRadio },
  data() {
    return {
      selectedOption: ''
    };
  }
};
</script>

关键点说明

  • 数据绑定:使用 v-model 实现双向绑定,简化状态管理。
  • 组件化:通过封装自定义组件提高复用性,支持样式和逻辑定制。
  • 第三方库:使用现成 UI 库(如 Element UI)可快速实现标准化交互。

标签: 组件vue
分享给朋友:

相关文章

vue怎么实现动画

vue怎么实现动画

Vue 动画实现方法 Vue 提供了多种方式实现动画效果,包括内置过渡系统、第三方库集成以及 CSS 动画。以下是常见实现方法: 使用 Vue 过渡系统 通过 <transition>…

实现vue组件

实现vue组件

Vue 组件的基本实现 Vue 组件是 Vue.js 的核心特性之一,允许将 UI 拆分为独立、可复用的模块。以下是实现 Vue 组件的几种方式: 单文件组件 (SFC) 使用 .vue 文件格式,…

vue 实现排序

vue 实现排序

Vue 实现排序的方法 使用计算属性实现排序 通过计算属性对数组进行排序,可以保持原始数据不变。示例代码展示了如何对列表按名称升序排序: <template> <div>…

vue实现抽奖

vue实现抽奖

Vue 实现抽奖功能 基本抽奖逻辑 创建一个Vue组件,包含奖品列表、抽奖按钮和结果显示区域。使用随机数生成器选择奖品。 <template> <div> <…

vue实现录像

vue实现录像

Vue 实现录像功能 在 Vue 中实现录像功能通常需要借助浏览器的 MediaDevices API 和 MediaRecorder API。以下是实现步骤: 获取用户摄像头和麦克风权限 使用 n…

vue 实现遮罩

vue 实现遮罩

Vue 实现遮罩层的方法 使用固定定位和透明背景 在Vue中实现遮罩层可以通过CSS固定定位结合透明背景色完成。创建一个全屏遮罩组件,利用position: fixed覆盖整个视窗。 <tem…