当前位置:首页 > VUE

vue实现表格数据增删

2026-02-09 15:05:50VUE

实现表格数据增删的Vue方案

数据绑定与渲染 使用v-for指令循环渲染表格数据,绑定到Vue实例的data属性。示例代码:

<table>
  <tr v-for="(item, index) in tableData" :key="item.id">
    <td>{{ item.name }}</td>
    <td>{{ item.age }}</td>
    <td>
      <button @click="deleteItem(index)">删除</button>
    </td>
  </tr>
</table>

新增数据方法 通过表单输入绑定v-model,在提交时更新数据数组:

methods: {
  addItem() {
    this.tableData.push({
      id: Date.now(),
      name: this.newItem.name,
      age: this.newItem.age
    });
    this.newItem = { name: '', age: '' }; // 清空表单
  }
}

删除数据方法 使用数组的splice方法或filter实现删除:

methods: {
  deleteItem(index) {
    this.tableData.splice(index, 1);
  }
}

完整组件示例

<template>
  <div>
    <input v-model="newItem.name" placeholder="姓名">
    <input v-model="newItem.age" placeholder="年龄">
    <button @click="addItem">添加</button>

    <table>
      <tr v-for="(item, index) in tableData" :key="item.id">
        <td>{{ item.name }}</td>
        <td>{{ item.age }}</td>
        <td>
          <button @click="deleteItem(index)">删除</button>
        </td>
      </tr>
    </table>
  </div>
</template>

<script>
export default {
  data() {
    return {
      tableData: [
        { id: 1, name: '张三', age: 25 },
        { id: 2, name: '李四', age: 30 }
      ],
      newItem: { name: '', age: '' }
    };
  },
  methods: {
    addItem() {
      this.tableData.push({
        id: Date.now(),
        name: this.newItem.name,
        age: this.newItem.age
      });
      this.newItem = { name: '', age: '' };
    },
    deleteItem(index) {
      this.tableData.splice(index, 1);
    }
  }
};
</script>

关键注意事项

响应式更新 直接通过索引修改数组元素(如this.array[0] = newValue)不会触发视图更新,应使用Vue.setsplice方法

唯一key值 v-for循环时必须指定:key,推荐使用唯一标识符而非循环索引,避免渲染性能问题

数据验证 新增数据时应添加基础验证逻辑,例如:

addItem() {
  if (!this.newItem.name || !this.newItem.age) return;
  // ...其余逻辑
}

进阶实现方案

使用计算属性 对表格数据进行过滤或排序时,使用计算属性保持原始数据不变:

computed: {
  sortedData() {
    return [...this.tableData].sort((a,b) => a.age - b.age);
  }
}

服务端交互 结合axios实现数据持久化:

vue实现表格数据增删

async deleteItem(id) {
  await axios.delete(`/api/items/${id}`);
  this.tableData = this.tableData.filter(item => item.id !== id);
}

标签: 表格数据
分享给朋友:

相关文章

vue实现数据渲染

vue实现数据渲染

Vue 数据渲染的实现方式 Vue.js 提供了多种数据渲染的方式,包括插值表达式、指令和计算属性等。以下是常见的实现方法: 插值表达式 使用双大括号 {{ }} 将数据绑定到模板中,数据变化时会自…

css表格表单制作

css表格表单制作

CSS表格制作 使用CSS创建表格主要涉及<table>标签及其子元素的样式控制。以下是一个基础示例: <table class="styled-table"> <…

vue实现表格拖动列宽

vue实现表格拖动列宽

实现表格列宽拖动的核心思路 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽逻辑,动态修改列宽。需要处理表头与表体的联动,确保拖动时视觉一致。 基础HTML结构 &…

vue怎么实现数据

vue怎么实现数据

Vue 数据实现方式 Vue 提供了多种方式来实现数据的响应式绑定和管理,核心是通过数据驱动视图的更新。 响应式数据声明 在 Vue 组件中,可以通过 data 选项声明响应式数据。这些数据会被 V…

vue实现分组表格

vue实现分组表格

Vue 实现分组表格的方法 使用 v-for 嵌套循环实现分组 通过嵌套的 v-for 循环可以轻松实现分组表格。外层循环遍历分组数据,内层循环遍历每组中的具体项。 <template>…

css怎么制作表格

css怎么制作表格

使用HTML和CSS制作表格 在HTML中,表格由<table>标签定义,结合CSS可以灵活控制样式。 基本HTML结构: <table> <tr>…