结合 Vue 的响应式特性来完成。以下是几种常见的实…">
当前位置:首页 > VUE

vue radio组件实现

2026-01-15 00:16:02VUE

Vue Radio 组件实现

在 Vue 中实现 Radio 组件可以通过原生 HTML 的 <input type="radio"> 结合 Vue 的响应式特性来完成。以下是几种常见的实现方式:

使用 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 option: {{ selectedOption }}</p>
  </div>
</template>

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

自定义 Radio 组件

创建一个可复用的 Radio 组件:

<!-- RadioButton.vue -->
<template>
  <label>
    <input
      type="radio"
      :checked="modelValue === value"
      @change="$emit('update:modelValue', value)"
      :value="value"
    />
    {{ label }}
  </label>
</template>

<script>
export default {
  props: {
    label: String,
    value: [String, Number],
    modelValue: [String, Number]
  }
}
</script>

使用自定义组件

vue radio组件实现

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

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

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

使用第三方 UI 库

许多流行的 Vue UI 库都提供了现成的 Radio 组件:

  • Element UI: <el-radio>
  • Vuetify: <v-radio>
  • Ant Design Vue: <a-radio>

样式自定义

vue radio组件实现

可以通过 CSS 自定义 Radio 按钮的外观:

/* 隐藏原生 Radio 按钮 */
input[type="radio"] {
  opacity: 0;
  position: absolute;
}

/* 自定义 Radio 样式 */
input[type="radio"] + label:before {
  content: "";
  display: inline-block;
  width: 16px;
  height: 16px;
  margin-right: 8px;
  border: 1px solid #ccc;
  border-radius: 50%;
  vertical-align: middle;
}

input[type="radio"]:checked + label:before {
  background-color: #409eff;
  border-color: #409eff;
}

Radio 组实现

对于一组互斥的 Radio 按钮,可以使用相同的 v-model 绑定:

<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: '',
      options: [
        { value: 'opt1', label: 'Option 1' },
        { value: 'opt2', label: 'Option 2' },
        { value: 'opt3', label: 'Option 3' }
      ]
    }
  }
}
</script>

这些方法涵盖了从基础实现到自定义组件再到使用 UI 库的不同方式,可以根据项目需求选择合适的方案。

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

相关文章

vue弹幕实现不重叠

vue弹幕实现不重叠

实现 Vue 弹幕不重叠的方法 CSS 定位与动画控制 通过绝对定位和动态计算弹幕轨道高度,确保弹幕在不同轨道上运行。每条弹幕占据固定高度的轨道,避免重叠。 // 弹幕轨道高度计算 const t…

vue设计与实现目录

vue设计与实现目录

以下是《Vue设计与实现》一书的典型目录结构(根据常见技术书籍及Vue核心内容整理): 响应式系统 响应式数据的基本原理 依赖收集与触发更新 实现简易响应式系统 Proxy与Reflec…

vue实现发送值接受值

vue实现发送值接受值

Vue 实现父子组件传值 父组件向子组件传值(props) 父组件通过 v-bind 或简写 : 向子组件传递数据。子组件通过 props 接收数据。 父组件代码: <template&g…

vue实现下拉框删除

vue实现下拉框删除

Vue 实现下拉框删除功能 在Vue中实现下拉框的删除功能通常涉及以下步骤: 数据绑定与渲染 在Vue组件中定义数据数组用于存储下拉框选项: data() { return { op…

vue实现矩阵

vue实现矩阵

Vue 实现矩阵的方法 在 Vue 中实现矩阵操作可以通过多种方式完成,以下是一些常见的方法: 使用二维数组表示矩阵 矩阵可以用二维数组来表示,每个元素对应矩阵中的一个值。在 Vue 的 data…

vue 实现pc

vue 实现pc

Vue 实现 PC 端应用的核心要点 Vue.js 是一个渐进式框架,适合构建 PC 端单页应用(SPA)或复杂的前端界面。以下是实现 PC 端应用的关键方法和注意事项: 项目初始化与工程化配置 使…