当前位置:首页 > VUE

vue实现增删改查

2026-02-21 00:48:45VUE

Vue 实现增删改查

在 Vue 中实现增删改查(CRUD)功能是常见的需求,通常涉及前端与后端 API 的交互。以下是一个基于 Vue 3 和 Composition API 的实现示例,假设后端 API 已提供相应的接口。

初始化项目与依赖

确保项目已安装 Vue 3 和 axios(用于 HTTP 请求)。若未安装,可以通过以下命令安装:

npm install axios

数据列表展示

定义一个响应式数据列表,并通过 axios 从后端获取数据:

<template>
  <div>
    <table>
      <tr v-for="item in items" :key="item.id">
        <td>{{ item.name }}</td>
        <td>{{ item.description }}</td>
        <td>
          <button @click="editItem(item)">编辑</button>
          <button @click="deleteItem(item.id)">删除</button>
        </td>
      </tr>
    </table>
  </div>
</template>

<script setup>
import { ref, onMounted } from 'vue';
import axios from 'axios';

const items = ref([]);

const fetchItems = async () => {
  const response = await axios.get('/api/items');
  items.value = response.data;
};

onMounted(() => {
  fetchItems();
});
</script>

新增数据

通过表单提交新增数据,并调用后端 API:

<template>
  <form @submit.prevent="addItem">
    <input v-model="newItem.name" placeholder="名称" />
    <input v-model="newItem.description" placeholder="描述" />
    <button type="submit">添加</button>
  </form>
</template>

<script setup>
const newItem = ref({
  name: '',
  description: ''
});

const addItem = async () => {
  await axios.post('/api/items', newItem.value);
  newItem.value = { name: '', description: '' };
  fetchItems(); // 重新加载列表
};
</script>

编辑数据

通过表单编辑现有数据,并调用后端 API 更新:

<template>
  <form v-if="editingItem" @submit.prevent="updateItem">
    <input v-model="editingItem.name" placeholder="名称" />
    <input v-model="editingItem.description" placeholder="描述" />
    <button type="submit">保存</button>
    <button @click="cancelEdit">取消</button>
  </form>
</template>

<script setup>
const editingItem = ref(null);

const editItem = (item) => {
  editingItem.value = { ...item };
};

const updateItem = async () => {
  await axios.put(`/api/items/${editingItem.value.id}`, editingItem.value);
  editingItem.value = null;
  fetchItems();
};

const cancelEdit = () => {
  editingItem.value = null;
};
</script>

删除数据

通过调用后端 API 删除数据:

<script setup>
const deleteItem = async (id) => {
  await axios.delete(`/api/items/${id}`);
  fetchItems();
};
</script>

完整示例

将以上部分整合为一个完整的 Vue 组件:

<template>
  <div>
    <form @submit.prevent="addItem">
      <input v-model="newItem.name" placeholder="名称" />
      <input v-model="newItem.description" placeholder="描述" />
      <button type="submit">添加</button>
    </form>

    <form v-if="editingItem" @submit.prevent="updateItem">
      <input v-model="editingItem.name" placeholder="名称" />
      <input v-model="editingItem.description" placeholder="描述" />
      <button type="submit">保存</button>
      <button @click="cancelEdit">取消</button>
    </form>

    <table>
      <tr v-for="item in items" :key="item.id">
        <td>{{ item.name }}</td>
        <td>{{ item.description }}</td>
        <td>
          <button @click="editItem(item)">编辑</button>
          <button @click="deleteItem(item.id)">删除</button>
        </td>
      </tr>
    </table>
  </div>
</template>

<script setup>
import { ref, onMounted } from 'vue';
import axios from 'axios';

const items = ref([]);
const newItem = ref({ name: '', description: '' });
const editingItem = ref(null);

const fetchItems = async () => {
  const response = await axios.get('/api/items');
  items.value = response.data;
};

const addItem = async () => {
  await axios.post('/api/items', newItem.value);
  newItem.value = { name: '', description: '' };
  fetchItems();
};

const editItem = (item) => {
  editingItem.value = { ...item };
};

const updateItem = async () => {
  await axios.put(`/api/items/${editingItem.value.id}`, editingItem.value);
  editingItem.value = null;
  fetchItems();
};

const cancelEdit = () => {
  editingItem.value = null;
};

const deleteItem = async (id) => {
  await axios.delete(`/api/items/${id}`);
  fetchItems();
};

onMounted(() => {
  fetchItems();
});
</script>

注意事项

  • 后端 API 需支持对应的 RESTful 接口(GET、POST、PUT、DELETE)。
  • 表单验证未在示例中体现,实际项目中建议添加。
  • 错误处理(如网络请求失败)可根据需求补充。

vue实现增删改查

标签: vue
分享给朋友:

相关文章

vue前端实现注册

vue前端实现注册

使用 Vue 实现用户注册功能 环境准备 确保已安装 Vue CLI 或通过 CDN 引入 Vue。若使用 Vue CLI,需安装 axios 或其他 HTTP 库用于后端通信。 注册表单组件 创…

vue实现右下角弹框

vue实现右下角弹框

实现右下角弹框的基本思路 在Vue中实现右下角弹框,通常需要结合CSS定位和Vue的组件化特性。弹框可以通过绝对定位固定在右下角,并通过Vue控制其显示与隐藏。 创建弹框组件 新建一个Vue组件(…

vue 实现权限

vue 实现权限

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

vue实现drag

vue实现drag

Vue 实现拖拽功能的方法 在 Vue 中实现拖拽功能可以通过原生 HTML5 的拖拽 API 或第三方库如 vuedraggable 来完成。以下是两种常见方法的实现方式。 使用 HTML5 拖拽…

vue实现$.extend

vue实现$.extend

Vue 实现类似 jQuery 的 $.extend 功能 在 Vue 中实现类似 jQuery 的 $.extend 功能,可以通过多种方式完成。$.extend 主要用于合并多个对象的属性,Vue…

vue页面实现

vue页面实现

Vue 页面实现方法 创建 Vue 组件 使用 Vue 单文件组件(SFC)方式创建页面,文件扩展名为 .vue。一个基本的 Vue 组件包含三个部分:模板(template)、脚本(script)和…