当前位置:首页 > VUE

vue实现单选删除

2026-01-19 21:08:51VUE

Vue 实现单选删除功能

在 Vue 中实现单选删除功能,通常涉及列表渲染、数据绑定和事件处理。以下是实现该功能的几种常见方法:

vue实现单选删除

使用 v-for 和 v-model 实现单选删除

<template>
  <div>
    <ul>
      <li v-for="(item, index) in items" :key="index">
        <input type="radio" v-model="selectedIndex" :value="index">
        {{ item.name }}
      </li>
    </ul>
    <button @click="deleteItem">删除选中项</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { name: '项目1' },
        { name: '项目2' },
        { name: '项目3' }
      ],
      selectedIndex: null
    }
  },
  methods: {
    deleteItem() {
      if (this.selectedIndex !== null) {
        this.items.splice(this.selectedIndex, 1)
        this.selectedIndex = null
      }
    }
  }
}
</script>

使用计算属性和方法实现更安全的删除

<template>
  <div>
    <ul>
      <li v-for="(item, index) in items" :key="item.id">
        <input type="radio" v-model="selectedId" :value="item.id">
        {{ item.name }}
      </li>
    </ul>
    <button @click="deleteSelected" :disabled="!selectedId">删除</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, name: '项目1' },
        { id: 2, name: '项目2' },
        { id: 3, name: '项目3' }
      ],
      selectedId: null
    }
  },
  methods: {
    deleteSelected() {
      this.items = this.items.filter(item => item.id !== this.selectedId)
      this.selectedId = null
    }
  }
}
</script>

使用 Vuex 管理状态(适用于大型应用)

// store.js
export default new Vuex.Store({
  state: {
    items: [
      { id: 1, name: '项目1' },
      { id: 2, name: '项目2' },
      { id: 3, name: '项目3' }
    ],
    selectedItemId: null
  },
  mutations: {
    deleteItem(state) {
      state.items = state.items.filter(item => item.id !== state.selectedItemId)
      state.selectedItemId = null
    },
    selectItem(state, id) {
      state.selectedItemId = id
    }
  }
})
<template>
  <div>
    <ul>
      <li v-for="item in $store.state.items" :key="item.id">
        <input 
          type="radio" 
          :value="item.id"
          :checked="$store.state.selectedItemId === item.id"
          @change="$store.commit('selectItem', item.id)"
        >
        {{ item.name }}
      </li>
    </ul>
    <button 
      @click="$store.commit('deleteItem')"
      :disabled="!$store.state.selectedItemId"
    >
      删除
    </button>
  </div>
</template>

注意事项

  1. 使用唯一标识符(如id)而非数组索引作为key,避免删除后出现渲染问题
  2. 删除操作前应确认是否有选中项,避免误操作
  3. 对于复杂数据结构,考虑使用深拷贝或Vue.set确保响应式更新
  4. 大型项目推荐使用Vuex集中管理状态

以上方法可根据项目需求和复杂度选择适合的实现方式。

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

相关文章

vue实现拼音搜索

vue实现拼音搜索

实现拼音搜索的基本思路 拼音搜索的核心是将中文转换为拼音,并在用户输入拼音时匹配对应的中文内容。Vue中可以通过集成拼音转换库(如pinyin或pinyin-pro)实现这一功能。 安装拼音转换库…

vue实现下拉刷新组件

vue实现下拉刷新组件

实现下拉刷新组件的核心思路 下拉刷新功能通常通过监听触摸事件、滚动位置和动画效果实现。Vue中可以利用自定义指令或封装组件完成,以下为两种常见实现方式。 基于自定义指令的实现 创建指令监听触摸事件,…

vue实现ai

vue实现ai

Vue 实现 AI 功能 Vue.js 可以通过集成第三方 AI 服务或本地 AI 模型来实现 AI 功能。以下是几种常见的方法: 集成第三方 AI API 使用 Vue 调用如 OpenAI、Go…

vue实现选区

vue实现选区

Vue 实现选区的基本方法 在Vue中实现选区功能通常涉及DOM操作和事件处理。以下是几种常见的方法: 使用原生JavaScript的Selection API 通过window.getSelec…

vue实现逻辑

vue实现逻辑

Vue 实现逻辑的核心概念 Vue.js 是一个渐进式 JavaScript 框架,其核心逻辑围绕数据驱动和组件化开发。通过响应式系统、虚拟 DOM 和组件生命周期等机制,Vue 实现了高效的前端开发…

vue实现曲线

vue实现曲线

Vue 实现曲线的方法 在 Vue 中实现曲线可以通过多种方式,包括使用 SVG、Canvas 或第三方库如 D3.js、ECharts 等。以下是几种常见的方法: 使用 SVG 绘制曲线 SVG…