当前位置:首页 > 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 实现弹幕的方法 使用 CSS 动画和动态渲染 在 Vue 中实现弹幕效果,可以通过动态渲染弹幕元素并结合 CSS 动画实现。以下是具体步骤: 数据准备 创建一个数组存储弹幕数据,每条弹幕包…

vue实现grid

vue实现grid

Vue 实现 Grid 布局的方法 使用 CSS Grid 布局 Vue 可以结合 CSS Grid 布局实现灵活的网格系统。CSS Grid 是现代浏览器原生支持的布局方案,无需额外依赖库。 &l…

vue 实现fadeout

vue 实现fadeout

Vue 实现淡出效果 在 Vue 中实现淡出(fade-out)效果可以通过 CSS 过渡或动画结合 Vue 的动态渲染功能完成。以下是几种常见方法: 使用 Vue 过渡(Transition)组件…

vue实现网站

vue实现网站

Vue 实现网站的基本步骤 Vue.js 是一个渐进式 JavaScript 框架,适合构建现代化的单页应用(SPA)或动态网站。以下是使用 Vue 实现网站的基本方法。 初始化 Vue 项目 使用…

vue实现系统

vue实现系统

Vue 实现系统的核心方法 使用 Vue.js 构建系统时,需结合其响应式特性与组件化开发模式。以下为关键实现路径: 项目初始化与工程配置 通过 Vue CLI 或 Vite 创建项目骨架,推荐选择…

vue实现标注

vue实现标注

Vue 实现标注功能的方法 使用 Vue 实现标注功能可以通过多种方式实现,以下介绍几种常见的方法: 1. 使用 HTML5 Canvas 实现标注 Canvas 提供了强大的绘图能力,适合实现复…