结合 v-model 实现数据绑定。以下是一个基础示例: <…">
当前位置:首页 > VUE

vue组件实现单选按钮

2026-02-22 22:52:37VUE

实现单选按钮的基本结构

在 Vue 中实现单选按钮可以通过原生 HTML 的 <input type="radio"> 结合 v-model 实现数据绑定。以下是一个基础示例:

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

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

动态渲染单选按钮组

若选项是动态生成的,可以通过 v-for 遍历数据:

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

<script>
export default {
  data() {
    return {
      selectedOption: '',
      options: [
        { value: 'apple', label: 'Apple' },
        { value: 'banana', label: 'Banana' },
        { value: 'orange', label: 'Orange' }
      ]
    }
  }
}
</script>

封装可复用的单选组件

将单选按钮组封装为独立组件,提高复用性:

<!-- RadioGroup.vue -->
<template>
  <div>
    <label v-for="option in options" :key="option.value">
      <input
        type="radio"
        v-model="internalValue"
        :value="option.value"
        @change="$emit('update:modelValue', internalValue)"
      />
      {{ option.label }}
    </label>
  </div>
</template>

<script>
export default {
  props: {
    modelValue: String,
    options: Array
  },
  data() {
    return {
      internalValue: this.modelValue
    }
  },
  watch: {
    modelValue(newVal) {
      this.internalValue = newVal
    }
  }
}
</script>

使用封装后的组件

在父组件中调用:

<template>
  <div>
    <RadioGroup
      v-model="selectedFruit"
      :options="fruitOptions"
    />
    <p>Selected Fruit: {{ selectedFruit }}</p>
  </div>
</template>

<script>
import RadioGroup from './RadioGroup.vue'

export default {
  components: { RadioGroup },
  data() {
    return {
      selectedFruit: '',
      fruitOptions: [
        { value: 'apple', label: 'Apple' },
        { value: 'banana', label: 'Banana' }
      ]
    }
  }
}
</script>

添加样式和自定义事件

通过 CSS 和事件监听增强交互性:

vue组件实现单选按钮

<template>
  <div class="radio-group">
    <label
      v-for="option in options"
      :key="option.value"
      :class="{ 'active': selectedOption === option.value }"
    >
      <input
        type="radio"
        v-model="selectedOption"
        :value="option.value"
        @change="handleChange"
      />
      {{ option.label }}
    </label>
  </div>
</template>

<script>
export default {
  props: ['options'],
  data() {
    return {
      selectedOption: ''
    }
  },
  methods: {
    handleChange() {
      this.$emit('selected', this.selectedOption)
    }
  }
}
</script>

<style>
.radio-group label {
  padding: 8px 12px;
  border: 1px solid #ddd;
  cursor: pointer;
}
.radio-group label.active {
  background-color: #e0f7fa;
  border-color: #4dd0e1;
}
</style>

标签: 单选组件
分享给朋友:

相关文章

elementui组件

elementui组件

ElementUI 组件概述 ElementUI 是一套基于 Vue.js 的桌面端组件库,提供丰富的 UI 组件,适用于快速开发中后台系统。以下是其核心组件分类及典型用法。 基础组件 Button…

vue单选实现

vue单选实现

Vue 单选实现方法 在 Vue 中实现单选功能可以通过多种方式完成,以下是常见的几种方法: 使用 v-model 绑定单选按钮 通过 v-model 绑定到同一个变量,实现单选效果: <t…

Vue组件实现方法

Vue组件实现方法

Vue组件的基本实现 Vue组件是Vue.js的核心概念之一,允许将UI拆分为独立可复用的代码片段。组件的实现方式有多种,以下是常见的几种方法。 单文件组件(SFC) 单文件组件以.vue为后缀,将…

vue组件实现返回

vue组件实现返回

实现返回功能的 Vue 组件方法 监听浏览器返回事件 通过 window.addEventListener('popstate', callback) 监听浏览器返回按钮事件,在回调函数中执行自定义逻…

vue组件实现跳转

vue组件实现跳转

Vue 组件实现跳转的方法 在 Vue 中实现页面跳转可以通过多种方式,以下是常见的几种方法: 使用 router-link 组件 router-link 是 Vue Router 提供的组件,用于…

vue实现组件化

vue实现组件化

Vue 组件化实现方法 组件定义 使用 .vue 单文件组件格式,包含 <template>、<script> 和 <style> 三个部分: <templ…