当前位置:首页 > 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 状态切换表单的提交行为(添加/更新)。

    vue原生实现crud功能

  4. 数组操作

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

扩展建议

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

    vue原生实现crud功能

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

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

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

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

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

相关文章

vue实现滚动截屏

vue实现滚动截屏

实现滚动截屏的基本思路 滚动截屏通常指对超出可视区域的长页面进行完整截图。在Vue中,可以通过结合DOM操作、Canvas绘制及第三方库实现。以下是具体方法: 使用html2canvas库实现…

vue实现3d宇宙

vue实现3d宇宙

Vue实现3D宇宙效果 使用Three.js库 Three.js是一个强大的JavaScript 3D库,可以轻松集成到Vue项目中。安装Three.js依赖: npm install three…

vue实现绑卡的原理

vue实现绑卡的原理

Vue 实现绑卡的原理 Vue 实现绑卡功能通常涉及前端表单处理、数据绑定、验证以及和后端 API 的交互。以下是实现绑卡功能的核心原理和步骤: 数据绑定与表单处理 Vue 通过 v-model…

vue实现菜单栏锚点

vue实现菜单栏锚点

实现锚点菜单的基本思路 在Vue中实现菜单栏锚点功能,主要涉及两个方面:创建可跳转的锚点位置,以及菜单项的点击滚动控制。通过监听滚动事件可以高亮当前可见区域的对应菜单项。 创建页面锚点位置 在需要…

vue实现一个tab栏

vue实现一个tab栏

Vue 实现 Tab 栏 基础实现(选项式 API) <template> <div class="tab-container"> <div class="t…

代码实现vue

代码实现vue

创建Vue项目 使用Vue CLI快速初始化项目,确保已安装Node.js和npm/yarn: npm install -g @vue/cli vue create my-vue-project…