结合 Vue 的响应式特性,或者使用第三方 UI 库…">
当前位置:首页 > VUE

vue radio组件实现

2026-01-08 14:01:04VUE

Vue Radio 组件实现

在 Vue 中实现 Radio 组件可以通过原生 HTML 的 <input type="radio"> 结合 Vue 的响应式特性,或者使用第三方 UI 库(如 Element UI、Ant Design Vue)提供的现成组件。以下是几种实现方式:

原生 HTML + Vue 实现

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

<script>
export default {
  data() {
    return {
      selectedOption: 'option1'
    };
  }
};
</script>
  • v-model 绑定到 selectedOption,用于同步选中的值。
  • value 属性定义每个 Radio 的值。

封装可复用的 Radio 组件

封装一个自定义的 Radio 组件,支持更灵活的配置:

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

<script>
export default {
  props: {
    options: {
      type: Array,
      required: true,
      validator: (options) =>
        options.every((opt) => opt.value && opt.label)
    },
    value: {
      type: [String, Number],
      required: true
    }
  },
  computed: {
    selectedValue: {
      get() {
        return this.value;
      },
      set(newValue) {
        this.$emit('input', newValue);
      }
    }
  }
};
</script>

使用方法:

<template>
  <RadioGroup
    v-model="selectedOption"
    :options="[
      { value: 'option1', label: 'Option 1' },
      { value: 'option2', label: 'Option 2' }
    ]"
    @change="handleChange"
  />
</template>

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

export default {
  components: { RadioGroup },
  data() {
    return {
      selectedOption: 'option1'
    };
  },
  methods: {
    handleChange(value) {
      console.log('Selected:', value);
    }
  }
};
</script>
  • 通过 options 动态渲染 Radio 选项。
  • 支持 v-model 双向绑定和 @change 事件。

使用第三方 UI 库

以 Element UI 为例:

<template>
  <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>
</template>

<script>
export default {
  data() {
    return {
      selectedOption: 'option1'
    };
  }
};
</script>
  • 直接使用 <el-radio-group><el-radio> 组件。
  • 支持更多功能如禁用状态、边框样式等。

动态生成 Radio 选项

从接口或动态数据生成 Radio 选项:

<template>
  <div>
    <label v-for="item in dynamicOptions" :key="item.id">
      <input
        type="radio"
        v-model="selectedDynamicOption"
        :value="item.value"
      />
      {{ item.text }}
    </label>
  </div>
</template>

<script>
export default {
  data() {
    return {
      selectedDynamicOption: '',
      dynamicOptions: [
        { id: 1, value: 'dynamic1', text: 'Dynamic 1' },
        { id: 2, value: 'dynamic2', text: 'Dynamic 2' }
      ]
    };
  }
};
</script>
  • 通过 v-for 动态渲染选项。
  • 适用于选项数据来自后端接口的场景。

vue radio组件实现

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

相关文章

vue公共列表的实现

vue公共列表的实现

实现 Vue 公共列表组件 公共列表组件通常用于展示重复结构的数据,例如商品列表、用户列表等。以下是一个典型的实现方式: 基础实现 创建可复用的列表组件 List.vue: <tem…

vue实现签约合作弹窗

vue实现签约合作弹窗

实现签约合作弹窗的步骤 使用Vue实现签约合作弹窗可以通过组件化方式完成,结合模态框和表单交互逻辑。以下是具体实现方法: 1. 创建弹窗组件 新建一个Vue组件文件(如SignContractDi…

vue实现后退

vue实现后退

Vue 实现后退功能的方法 在 Vue 中实现后退功能通常可以通过以下几种方式完成,具体取决于应用场景和需求。 使用 window.history API 通过原生 JavaScript 的 win…

ssh vue 实现

ssh vue 实现

使用SSH连接Vue项目部署的服务器 在Vue项目开发或部署过程中,可能需要通过SSH连接到远程服务器进行配置或维护。以下是实现SSH连接并部署Vue项目的关键步骤: 生成SSH密钥对 在本地终端…

vue实现批量

vue实现批量

Vue 实现批量操作的方法 在 Vue 中实现批量操作通常涉及选择多个项目并执行统一处理,例如批量删除、批量更新等。以下是几种常见实现方式: 表格多选批量操作 使用 el-table 配合复选框实现…

通过vue实现

通过vue实现

Vue 实现方法 安装 Vue 确保已安装 Node.js 和 npm,通过以下命令安装 Vue CLI: npm install -g @vue/cli 创建 Vue 项目 使用 Vue CLI…