当前位置:首页 > 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 实现简单弹窗 组件基础结构 创建一个名为 Modal.vue 的组件文件,包含模板、脚本和样式部分: <template> <div class="mod…

vue element实现

vue element实现

Vue Element UI 实现 Vue Element UI 是基于 Vue.js 的组件库,提供丰富的 UI 组件,适合快速开发企业级中后台产品。以下是一些关键实现方法和步骤: 安装 Vue…

vue实现动态

vue实现动态

Vue 实现动态路由的方法 在 Vue 中实现动态路由通常涉及以下几个关键步骤: 使用 Vue Router 的动态路由匹配 通过 Vue Router 的 :param 语法可以实现动态路由匹配。…

vue原理实现

vue原理实现

Vue 原理实现的核心机制 Vue.js 的核心原理基于响应式系统、虚拟 DOM 和模板编译。以下是其核心实现机制的分解: 响应式系统 Vue 使用 Object.defineProperty(Vu…

vue实现频道

vue实现频道

Vue实现频道功能的方法 使用Vue Router动态路由 通过Vue Router的动态路由功能可以轻松实现频道切换。在路由配置中定义动态参数,组件内通过this.$route.params获取当前…

实现简单vue

实现简单vue

实现一个简单的 Vue.js 框架 Vue.js 的核心功能包括数据绑定、响应式系统和虚拟 DOM。以下是一个简化版的 Vue 实现,涵盖基本功能。 数据响应式系统 使用 Object.define…