当前位置:首页 > VUE

vue里实现增删改查

2026-01-12 07:10:22VUE

Vue 中实现增删改查(CRUD)

数据准备与初始化

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

data() {
  return {
    items: [
      { id: 1, name: 'Item 1', price: 10 },
      { id: 2, name: 'Item 2', price: 20 }
    ],
    form: {
      id: null,
      name: '',
      price: 0
    },
    isEditing: false
  }
}

添加数据

通过表单绑定 v-model,提交时向数组添加新数据:

methods: {
  addItem() {
    this.items.push({
      id: Date.now(),
      name: this.form.name,
      price: this.form.price
    })
    this.resetForm()
  }
}

删除数据

使用 filtersplice 移除指定项:

vue里实现增删改查

deleteItem(id) {
  this.items = this.items.filter(item => item.id !== id)
}

编辑数据

将选中项数据填充到表单,标记编辑状态:

editItem(item) {
  this.form = { ...item }
  this.isEditing = true
}

更新数据

根据 ID 找到对应项并更新数据:

vue里实现增删改查

updateItem() {
  const index = this.items.findIndex(item => item.id === this.form.id)
  this.items.splice(index, 1, { ...this.form })
  this.resetForm()
  this.isEditing = false
}

表单重置

清理表单数据并重置状态:

resetForm() {
  this.form = { id: null, name: '', price: 0 }
}

模板示例

<template>
  <div>
    <form @submit.prevent="isEditing ? updateItem() : addItem()">
      <input v-model="form.name" placeholder="Name">
      <input v-model.number="form.price" type="number" placeholder="Price">
      <button type="submit">{{ isEditing ? 'Update' : 'Add' }}</button>
    </form>

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

使用计算属性优化

对于复杂数据操作可添加计算属性:

computed: {
  totalItems() {
    return this.items.length
  }
}

注意事项

  • 确保为列表项设置唯一的 :key
  • 对于深层对象,使用 { ...object } 展开运算符避免引用问题
  • 表单验证建议使用 Vuelidate 等库
  • 大型项目可考虑 Vuex 管理状态

标签: vue
分享给朋友:

相关文章

vue实现aop切面

vue实现aop切面

Vue 实现 AOP 切面编程的方法 在 Vue 中实现 AOP(面向切面编程)可以通过多种方式,以下是几种常见的实现方法: 使用 Vue 混入(Mixins) Vue 的混入机制可以用于实现横切关…

vue实现无线滚动列表

vue实现无线滚动列表

无限滚动列表的实现方法 在Vue中实现无限滚动列表通常结合监听滚动事件和动态加载数据。以下是几种常见方法: 使用自定义指令 创建自定义指令v-infinite-scroll监听滚动事件: Vu…

vue实现按钮组轮换

vue实现按钮组轮换

实现按钮组轮换的方法 在Vue中实现按钮组轮换效果可以通过动态绑定类和事件处理来完成。以下是一种常见的实现方式: 模板部分 <template> <div class="…

vue实现视频会议

vue实现视频会议

使用 Vue 实现视频会议 技术选型 Vue.js 作为前端框架,结合 WebRTC 技术实现实时音视频通信。常用的库包括: peerjs:简化 WebRTC 的点对点连接。 socket.io:…

vue实现继承语法糖

vue实现继承语法糖

在Vue中实现继承可以通过多种方式模拟类继承的效果,以下是常见的几种方法: 使用mixins实现逻辑复用 通过Vue的mixins机制共享组件选项,达到类似继承的效果: const Bas…

vue实现导航栏切图

vue实现导航栏切图

Vue 实现导航栏切图 使用 Vue Router 实现基础导航 在 Vue 项目中,可以通过 Vue Router 实现导航栏的路由切换。创建一个导航栏组件,并在其中使用 <router-li…