当前位置:首页 > VUE

vue原生实现crud功能

2026-01-22 08:27:23VUE

Vue 原生实现 CRUD 功能

在 Vue 中实现基础的 CRUD(增删改查)功能,可以通过组合式 API 或选项式 API 完成。以下是一个基于组合式 API 的完整实现示例,包含数据列表展示、添加、编辑和删除功能。

数据定义与状态管理

import { ref } from 'vue';

const items = ref([
  { id: 1, name: 'Item 1', description: 'Description 1' },
  { id: 2, name: 'Item 2', description: 'Description 2' }
]);

const formData = ref({
  id: null,
  name: '',
  description: ''
});

const isEditing = ref(false);

添加/更新数据

const saveItem = () => {
  if (isEditing.value) {
    const index = items.value.findIndex(item => item.id === formData.value.id);
    items.value[index] = { ...formData.value };
  } else {
    const newId = Math.max(...items.value.map(item => item.id)) + 1;
    items.value.push({ ...formData.value, id: newId });
  }
  resetForm();
};

const editItem = (item) => {
  formData.value = { ...item };
  isEditing.value = true;
};

删除数据

const deleteItem = (id) => {
  items.value = items.value.filter(item => item.id !== id);
};

表单重置

const resetForm = () => {
  formData.value = { id: null, name: '', description: '' };
  isEditing.value = false;
};

模板示例

<template>
  <div>
    <form @submit.prevent="saveItem">
      <input v-model="formData.name" placeholder="Name" required>
      <input v-model="formData.description" placeholder="Description">
      <button type="submit">{{ isEditing ? 'Update' : 'Add' }}</button>
      <button v-if="isEditing" @click="resetForm">Cancel</button>
    </form>

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

完整组件示例

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

// 数据状态
const items = ref([...]);
const formData = ref({...});
const isEditing = ref(false);

// 方法
const saveItem = () => {...};
const editItem = (item) => {...};
const deleteItem = (id) => {...};
const resetForm = () => {...};
</script>

<template>
  <!-- 表单和列表模板 -->
</template>

关键实现要点

  1. 响应式数据:使用 refreactive 管理组件状态,确保数据变更自动更新视图。

  2. 表单绑定:通过 v-model 实现表单与数据的双向绑定,简化用户输入处理。

  3. 条件渲染:利用 isEditing 状态切换表单的提交行为(添加/更新)。

  4. 数组操作

    • 添加使用 push
    • 更新通过 findIndex 定位后替换
    • 删除使用 filter
  5. 唯一ID生成:通过查找现有最大ID并递增的方式确保新条目ID唯一性。

扩展建议

  1. 表单验证:可添加 Vuelidate 或手动验证逻辑提升数据完整性。

  2. 持久化存储:结合 localStorage 或后端API实现数据持久化。

  3. 组件拆分:将列表和表单拆分为子组件提高可维护性。

  4. 状态管理:复杂场景可考虑使用 Pinia 集中管理CRUD状态。

    vue原生实现crud功能

该实现展示了Vue核心功能如何组合完成基础CRUD操作,可根据实际需求进行扩展和优化。

标签: 功能vue
分享给朋友:

相关文章

vue实现列表

vue实现列表

Vue 实现列表的方法 在 Vue 中实现列表渲染通常使用 v-for 指令,可以动态生成多个元素。以下是几种常见的实现方式: 基础列表渲染 使用 v-for 遍历数组,生成列表项。v-for 需要…

黑马vue实现

黑马vue实现

以下是关于使用 Vue.js 实现黑马相关功能或项目的关键方法和实践指南: 环境配置与项目初始化 安装最新版 Vue CLI 或使用 Vite 创建项目: npm create vue@lates…

node vue实现

node vue实现

Node.js 与 Vue.js 实现方案 环境搭建 安装 Node.js(建议 LTS 版本),通过 npm 或 yarn 初始化项目。Vue.js 可通过 Vue CLI 快速搭建: npm…

vue怎么实现onclick

vue怎么实现onclick

在Vue中实现点击事件(类似原生onclick)可以通过多种方式完成,以下是常见方法: 使用 v-on 指令 Vue提供了v-on指令绑定DOM事件,简写为@。例如绑定点击事件: <butt…

实现vue页面回退

实现vue页面回退

监听浏览器返回事件 在Vue组件中使用beforeRouteLeave导航守卫,可以监听路由变化。该方法在离开当前路由前触发,适用于需要确认或保存数据的场景。 beforeRouteLeave(…

vue实现路由守卫

vue实现路由守卫

路由守卫的基本概念 路由守卫是 Vue Router 提供的一种机制,用于在路由跳转前后执行特定的逻辑。通过路由守卫,可以实现权限控制、页面访问限制、数据预加载等功能。 全局前置守卫 使用 rout…