通过 v-model 绑定数据实现单选功能,适合基础场景:
当前位置:首页 > VUE

vue radio实现单选

2026-01-19 02:27:32VUE

实现 Vue 单选按钮(Radio)的方法

使用原生 <input type="radio">

通过 v-model 绑定数据实现单选功能,适合基础场景:

<template>
  <div>
    <input type="radio" id="option1" value="Option1" v-model="selectedOption">
    <label for="option1">Option 1</label>

    <input type="radio" id="option2" value="Option2" v-model="selectedOption">
    <label for="option2">Option 2</label>
  </div>
</template>

<script>
export default {
  data() {
    return {
      selectedOption: '' // 默认选中的值
    }
  }
}
</script>

使用 Element UI 的 Radio 组件

适用于使用 Element UI 框架的项目:

vue radio实现单选

<template>
  <div>
    <el-radio v-model="radioValue" label="1">Option A</el-radio>
    <el-radio v-model="radioValue" label="2">Option B</el-radio>
  </div>
</template>

<script>
export default {
  data() {
    return {
      radioValue: '1' // 默认选中值需与 label 匹配
    }
  }
}
</script>

动态生成 Radio 选项

通过 v-for 动态渲染选项列表:

<template>
  <div>
    <div v-for="option in options" :key="option.value">
      <input 
        type="radio" 
        :id="option.value" 
        :value="option.value" 
        v-model="selectedOption"
      >
      <label :for="option.value">{{ option.label }}</label>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      selectedOption: 'A',
      options: [
        { value: 'A', label: 'Alpha' },
        { value: 'B', label: 'Beta' }
      ]
    }
  }
}
</script>

自定义 Radio 组件

创建可复用的自定义单选组件:

vue radio实现单选

<!-- CustomRadio.vue -->
<template>
  <div class="custom-radio" @click="selectOption">
    <div :class="{ 'active': isSelected }"></div>
    <span>{{ label }}</span>
  </div>
</template>

<script>
export default {
  props: {
    label: String,
    value: String,
    selectedValue: String
  },
  computed: {
    isSelected() {
      return this.value === this.selectedValue
    }
  },
  methods: {
    selectOption() {
      this.$emit('input', this.value)
    }
  }
}
</script>

<style scoped>
.custom-radio { display: flex; align-items: center; cursor: pointer; }
.active { background-color: #409EFF; }
</style>

使用 Vuex 管理状态

当需要全局状态管理时:

// store.js
export default new Vuex.Store({
  state: {
    radioSelection: null
  },
  mutations: {
    setRadioSelection(state, payload) {
      state.radioSelection = payload
    }
  }
})
<template>
  <input 
    type="radio" 
    v-model="$store.state.radioSelection" 
    value="storeOption"
  >
</template>

表单验证集成

结合 vee-validate 进行表单验证:

<template>
  <ValidationProvider rules="required" v-slot="{ errors }">
    <input type="radio" v-model="choice" value="accept">
    <span>{{ errors[0] }}</span>
  </ValidationProvider>
</template>

注意事项

  • 单选按钮组必须共享同一个 v-model 绑定
  • 动态生成的选项需确保 value 唯一性
  • 组件库的 Radio 通常提供更丰富的样式和功能(如禁用状态)
  • 移动端建议增加点击区域大小

标签: 单选vue
分享给朋友:

相关文章

vue响应式实现

vue响应式实现

Vue 响应式实现原理 Vue 的响应式系统基于 Object.defineProperty(Vue 2.x)或 Proxy(Vue 3.x)实现,通过数据劫持和依赖收集实现数据变化时的自动更新。…

vue单选按钮实现

vue单选按钮实现

Vue 单选按钮实现 在 Vue 中实现单选按钮可以通过 v-model 绑定数据,结合 input 元素的 type="radio" 属性来实现。以下是几种常见的实现方式: 基础实现 <…

vue实现网页切换

vue实现网页切换

Vue 实现网页切换的方法 在 Vue 中实现网页切换通常可以通过以下几种方式完成,具体取决于项目需求和路由管理方式。 使用 Vue Router Vue Router 是 Vue.js 官方提供…

vue实现多个tab

vue实现多个tab

Vue 实现多个 Tab 的方法 使用动态组件切换 在 Vue 中可以通过动态组件 <component :is="currentTab"> 结合 v-for 和 v-bind 实现多个…

vue实现条件判断

vue实现条件判断

Vue 条件判断实现方法 Vue 提供了多种方式实现条件判断,可以根据不同场景选择合适的方式。 v-if / v-else-if / v-else 这是 Vue 中最常用的条件渲染指令,根据表达式的…

vue 实现简单登陆

vue 实现简单登陆

以下是一个使用 Vue 3 实现的简单登录功能示例,包含表单验证和基础交互逻辑: 创建 Vue 组件 <template> <div class="login-contain…