当前位置:首页 > VUE

vue实现增删改功能

2026-01-22 00:30:56VUE

Vue 实现增删改功能

在 Vue 中实现增删改功能通常涉及数据绑定、事件处理和状态管理。以下是一个完整的实现方案,涵盖增删改查(CRUD)的核心逻辑。

数据初始化

在 Vue 组件的 data 中定义初始数据列表和表单对象:

data() {
  return {
    items: [
      { id: 1, name: 'Item 1' },
      { id: 2, name: 'Item 2' }
    ],
    form: {
      id: null,
      name: ''
    },
    editing: false
  }
}

新增功能

通过表单绑定 v-model 并触发添加方法:

<input v-model="form.name" placeholder="Enter name">
<button @click="addItem">Add</button>
methods: {
  addItem() {
    if (!this.form.name) return
    this.items.push({
      id: Math.max(...this.items.map(i => i.id)) + 1,
      name: this.form.name
    })
    this.resetForm()
  },
  resetForm() {
    this.form = { id: null, name: '' }
    this.editing = false
  }
}

删除功能

通过索引或唯一标识符删除数据:

<ul>
  <li v-for="(item, index) in items" :key="item.id">
    {{ item.name }}
    <button @click="deleteItem(index)">Delete</button>
  </li>
</ul>
methods: {
  deleteItem(index) {
    this.items.splice(index, 1)
  }
}

编辑功能

实现编辑需要先填充表单再更新数据:

<button @click="editItem(item)">Edit</button>
methods: {
  editItem(item) {
    this.form = { ...item }
    this.editing = true
  },
  updateItem() {
    const index = this.items.findIndex(i => i.id === this.form.id)
    this.items.splice(index, 1, { ...this.form })
    this.resetForm()
  }
}

条件渲染提交按钮

根据编辑状态切换按钮功能:

vue实现增删改功能

<button @click="editing ? updateItem() : addItem()">
  {{ editing ? 'Update' : 'Add' }}
</button>

完整组件示例

<template>
  <div>
    <input v-model="form.name" placeholder="Enter name">
    <button @click="editing ? updateItem() : addItem()">
      {{ editing ? 'Update' : 'Add' }}
    </button>

    <ul>
      <li v-for="(item, index) in items" :key="item.id">
        {{ item.name }}
        <button @click="editItem(item)">Edit</button>
        <button @click="deleteItem(index)">Delete</button>
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, name: 'Item 1' },
        { id: 2, name: 'Item 2' }
      ],
      form: {
        id: null,
        name: ''
      },
      editing: false
    }
  },
  methods: {
    addItem() {
      if (!this.form.name) return
      this.items.push({
        id: Math.max(...this.items.map(i => i.id)) + 1,
        name: this.form.name
      })
      this.resetForm()
    },
    editItem(item) {
      this.form = { ...item }
      this.editing = true
    },
    updateItem() {
      const index = this.items.findIndex(i => i.id === this.form.id)
      this.items.splice(index, 1, { ...this.form })
      this.resetForm()
    },
    deleteItem(index) {
      this.items.splice(index, 1)
    },
    resetForm() {
      this.form = { id: null, name: '' }
      this.editing = false
    }
  }
}
</script>

关键点说明

  • 数据驱动:所有操作直接修改 items 数组,Vue 自动更新 DOM
  • 唯一标识:使用 id 确保操作准确性,避免直接依赖数组索引
  • 表单复用:通过 editing 状态切换添加/编辑模式
  • 响应式更新:数组方法如 push/splice 会触发视图更新

对于复杂场景,建议使用 Vuex 或 Pinia 管理状态,组件间通过 props/events 通信。

标签: 功能vue
分享给朋友:

相关文章

vue实现建模

vue实现建模

Vue 实现建模的方法 在 Vue 中实现建模通常涉及数据绑定、组件化和状态管理。以下是几种常见的方法: 数据驱动建模 Vue 的核心是数据驱动视图。通过定义数据模型,Vue 会自动更新 DOM。例…

vue实现fullpage

vue实现fullpage

Vue 实现 FullPage 效果 在 Vue 中实现全屏滚动(FullPage)效果可以通过多种方式完成,以下是几种常见的方法: 使用现有库 vue-fullpage.js 安装 vue-ful…

vue实现分发

vue实现分发

Vue 实现分发的方法 在 Vue 中,分发(Distribution)通常指的是将内容从父组件传递到子组件,或者通过插槽(Slots)机制让父组件控制子组件的部分渲染内容。以下是几种常见的实现分发的…

js 实现vue

js 实现vue

实现 Vue 的核心功能 在 JavaScript 中实现 Vue 的核心功能需要模拟数据绑定、虚拟 DOM 和响应式系统。以下是一个简化版的实现思路: 响应式系统 通过 Object.define…

vue实现爬虫

vue实现爬虫

Vue 实现爬虫的基本思路 Vue.js 本身是一个前端框架,主要用于构建用户界面。要实现爬虫功能,通常需要结合后端技术或浏览器自动化工具。以下是几种常见的方法: 方法一:Vue + Node.js…

vue分页实现

vue分页实现

实现Vue分页的几种方法 使用Element UI的分页组件 安装Element UI库后,可以直接使用其分页组件。以下是一个基本示例: <template> <div>…