当前位置:首页 > 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 移除指定项:

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

编辑数据

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

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

更新数据

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

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>

使用计算属性优化

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

vue里实现增删改查

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

注意事项

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

标签: vue
分享给朋友:

相关文章

vue 实现权限

vue 实现权限

Vue 实现权限控制的方法 在 Vue 项目中实现权限控制通常涉及前端路由、组件和按钮级别的权限管理。以下是几种常见的实现方式: 路由权限控制 通过路由守卫实现权限验证,过滤用户无权访问的路由:…

vue  实现tab

vue 实现tab

实现 Tab 切换功能 在 Vue 中实现 Tab 切换功能可以通过动态组件或条件渲染完成。以下是两种常见方法: 使用 v-if 或 v-show 实现条件渲染 通过绑定 currentTab 变量…

vue实现toast

vue实现toast

Vue 实现 Toast 的方法 使用第三方库(推荐) 对于快速实现 Toast 功能,推荐使用成熟的第三方库如 vue-toastification 或 vant 的 Toast 组件。 安装 v…

vue diff实现

vue diff实现

Vue Diff 算法实现原理 Vue 的虚拟 DOM Diff 算法(即 patch 过程)是其高效渲染的核心,主要通过对比新旧虚拟节点的差异,最小化 DOM 操作。以下是关键实现要点: 同层级比…

vue 实现遮罩

vue 实现遮罩

Vue 实现遮罩层的方法 使用固定定位和透明背景 在Vue中实现遮罩层可以通过CSS固定定位结合透明背景色完成。创建一个全屏遮罩组件,利用position: fixed覆盖整个视窗。 <tem…

vue实现刷新

vue实现刷新

Vue 实现页面刷新的方法 在Vue中实现页面刷新可以通过多种方式,以下是几种常见的方法: 使用 window.location.reload() 通过调用浏览器的原生方法强制刷新当前页面: me…