vue实现增加修改
Vue 实现增删改查功能
数据绑定与响应式
Vue 的核心是数据驱动视图,通过 v-model 实现表单数据双向绑定。例如,在表单中绑定一个对象:
<input v-model="formData.name" placeholder="请输入名称">
对应的 data 中需初始化 formData:
data() {
return {
formData: {
name: '',
id: null
}
}
}
新增数据
通过方法将表单数据添加到列表。示例代码:

methods: {
addItem() {
if (!this.formData.name) return alert('名称不能为空');
this.list.push({...this.formData});
this.formData = { name: '', id: null }; // 重置表单
}
}
修改数据
编辑时需先填充表单。通过索引或唯一标识定位数据:
editItem(index) {
this.formData = {...this.list[index]};
this.editingIndex = index;
}
提交修改时更新对应数据:

updateItem() {
if (this.editingIndex !== null) {
this.list.splice(this.editingIndex, 1, {...this.formData});
this.cancelEdit();
}
},
cancelEdit() {
this.formData = { name: '', id: null };
this.editingIndex = null;
}
删除数据
使用 splice 或 filter 移除数据:
deleteItem(index) {
if (confirm('确认删除?')) {
this.list.splice(index, 1);
}
}
列表渲染
使用 v-for 渲染数据列表:
<ul>
<li v-for="(item, index) in list" :key="item.id">
{{ item.name }}
<button @click="editItem(index)">编辑</button>
<button @click="deleteItem(index)">删除</button>
</li>
</ul>
完整示例组件
<template>
<div>
<input v-model="formData.name">
<button v-if="editingIndex === null" @click="addItem">添加</button>
<button v-else @click="updateItem">更新</button>
<button v-if="editingIndex !== null" @click="cancelEdit">取消</button>
<ul>
<li v-for="(item, index) in list" :key="index">
{{ item.name }}
<button @click="editItem(index)">编辑</button>
<button @click="deleteItem(index)">删除</button>
</li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
list: [],
formData: { name: '' },
editingIndex: null
}
},
methods: {
addItem() {
if (!this.formData.name) return;
this.list.push({...this.formData});
this.formData = { name: '' };
},
editItem(index) {
this.formData = {...this.list[index]};
this.editingIndex = index;
},
updateItem() {
this.list.splice(this.editingIndex, 1, {...this.formData});
this.cancelEdit();
},
deleteItem(index) {
this.list.splice(index, 1);
},
cancelEdit() {
this.formData = { name: '' };
this.editingIndex = null;
}
}
}
</script>
关键注意事项
- 使用
:key时推荐用唯一标识而非索引 - 深拷贝数据避免引用问题(如
{...obj}) - 表单验证应在提交前完成
- 对于复杂项目建议使用 Vuex 管理状态






