当前位置:首页 > VUE

vue原生实现crud功能

2026-02-22 23:26:07VUE

Vue 原生实现 CRUD 功能

在 Vue 中实现 CRUD(Create, Read, Update, Delete)功能,可以通过组合式 API 或选项式 API 完成。以下是基于组合式 API 的实现方案,包含核心代码和逻辑。

数据准备与状态管理

使用 refreactive 管理数据状态,模拟一个简单的待办事项列表:

import { ref } from 'vue';

const items = ref([]);
const newItem = ref('');
const editingIndex = ref(-1);

创建(Create)

添加新条目到列表:

vue原生实现crud功能

const addItem = () => {
  if (newItem.value.trim()) {
    items.value.push({ id: Date.now(), text: newItem.value });
    newItem.value = '';
  }
};

读取(Read)

渲染列表数据:

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

更新(Update)

编辑现有条目:

vue原生实现crud功能

const editItem = (index) => {
  editingIndex.value = index;
  newItem.value = items.value[index].text;
};

const updateItem = () => {
  if (editingIndex.value !== -1 && newItem.value.trim()) {
    items.value[editingIndex.value].text = newItem.value;
    editingIndex.value = -1;
    newItem.value = '';
  }
};

删除(Delete)

移除指定条目:

const deleteItem = (index) => {
  items.value.splice(index, 1);
};

表单绑定与操作整合

将方法与表单绑定:

<template>
  <input v-model="newItem" placeholder="Enter item">
  <button 
    @click="editingIndex === -1 ? addItem() : updateItem()"
  >
    {{ editingIndex === -1 ? 'Add' : 'Update' }}
  </button>
</template>

完整示例代码

整合后的组件代码:

<template>
  <div>
    <input v-model="newItem" placeholder="Enter item">
    <button @click="editingIndex === -1 ? addItem() : updateItem()">
      {{ editingIndex === -1 ? 'Add' : 'Update' }}
    </button>

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

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

const items = ref([]);
const newItem = ref('');
const editingIndex = ref(-1);

const addItem = () => {
  if (newItem.value.trim()) {
    items.value.push({ id: Date.now(), text: newItem.value });
    newItem.value = '';
  }
};

const editItem = (index) => {
  editingIndex.value = index;
  newItem.value = items.value[index].text;
};

const updateItem = () => {
  if (editingIndex.value !== -1 && newItem.value.trim()) {
    items.value[editingIndex.value].text = newItem.value;
    editingIndex.value = -1;
    newItem.value = '';
  }
};

const deleteItem = (index) => {
  items.value.splice(index, 1);
};
</script>

关键点说明

  • 响应式数据:使用 refreactive 确保数据变化触发视图更新。
  • 条件渲染:通过 editingIndex 切换添加/更新模式。
  • 列表操作:数组方法 pushsplice 直接修改响应式数据。

此实现无需额外库,适合小型应用。如需复杂状态管理,可结合 Pinia 或 Vuex。

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

相关文章

vue实现多用户登录

vue实现多用户登录

实现多用户登录的基本思路 在Vue中实现多用户登录通常需要结合后端API完成身份验证,并通过前端路由、状态管理(如Vuex或Pinia)和本地存储(如localStorage)来管理用户会话。以下是关…

vue实现setinterval

vue实现setinterval

在 Vue 中使用 setInterval Vue 中可以通过生命周期钩子和方法结合 setInterval 实现定时任务。以下是一个完整的实现示例: <template> <…

vue 实现过滤

vue 实现过滤

Vue 实现过滤的方法 在 Vue 中实现过滤功能可以通过多种方式完成,包括使用计算属性、自定义过滤器、第三方库等。以下是几种常见的实现方法: 使用计算属性进行过滤 计算属性是 Vue 中最常用的过…

vue如何实现

vue如何实现

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

vue实现computed

vue实现computed

Vue 中 computed 的实现原理 computed 属性是 Vue 的一个核心特性,它基于响应式依赖进行缓存,仅在依赖发生变化时重新计算。以下是 computed 的实现方式: 基本用法 在…

vue实现树形

vue实现树形

Vue 实现树形组件 在 Vue 中实现树形结构通常需要递归组件和动态数据绑定。以下是实现树形组件的几种常见方法。 递归组件实现 递归组件是 Vue 中实现树形结构的核心方法。通过组件调用自身,可以…