当前位置:首页 > 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实现bootstrap

vue实现bootstrap

Vue 中集成 Bootstrap 的方法 在 Vue 项目中集成 Bootstrap 可以通过以下方式实现,涵盖样式、组件和交互功能。 安装 Bootstrap 依赖 通过 npm 或 yarn…

vue实现删除

vue实现删除

Vue 实现删除功能的方法 在 Vue 中实现删除功能通常涉及以下几个步骤: 数据绑定与列表渲染 使用 v-for 指令渲染列表数据,并为每个项绑定唯一标识符(如 id)。例如: <…

vue实现素材

vue实现素材

Vue 实现素材的方法 使用 Vue 组件管理素材 在 Vue 项目中,可以通过组件化的方式管理素材。创建一个专门的组件来加载和显示素材,例如图片、视频或音频文件。组件可以接收素材的路径或 URL 作…

vue实现博客

vue实现博客

Vue 实现博客的基本步骤 使用 Vue.js 实现一个博客系统可以分为前端和后端两部分。以下是基于 Vue 的前端实现方案,后端可以选择 Node.js、Django 或其他框架。 项目初始化 使…

vue 组件实现

vue 组件实现

Vue 组件实现方法 单文件组件 (SFC) 使用 .vue 文件格式,包含模板、脚本和样式三部分: <template> <div class="example">{{…

vue如何实现

vue如何实现

Vue 实现方法 在 Vue 中实现功能通常涉及组件化开发、状态管理和响应式数据绑定。以下是几种常见的实现方式: 组件化开发 使用 Vue 的单文件组件(.vue 文件)结构,将 UI 拆分为可复用…