当前位置:首页 > 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中实现请求进度条可以通过多种方式完成,常见的有使用第三方库如axios结合nprogress或自定义进度条组件。以下是几种实现方法: 使用axios和nprogress…

vue实现键盘

vue实现键盘

Vue 实现键盘功能 在Vue中实现键盘功能通常涉及监听键盘事件、处理输入以及渲染虚拟键盘界面。以下是几种常见的实现方式: 监听键盘事件 通过@keydown或@keyup指令监听键盘事件,适用于需…

vue实现接口

vue实现接口

在 Vue 中实现接口请求 Vue 本身不直接提供 HTTP 请求功能,通常需要借助第三方库如 axios 或 fetch 来实现接口请求。以下是几种常见方法: 使用 axios 发送请求 安装 a…

vue实现hovuer

vue实现hovuer

Vue 实现 Hover 效果 在 Vue 中实现 hover 效果可以通过多种方式完成,以下是几种常见的方法: 使用 CSS 直接控制 通过 :hover 伪类实现,无需额外的 JavaScrip…

vue实现github

vue实现github

Vue 实现 GitHub 相关功能 创建 GitHub API 请求 在 Vue 项目中,可以使用 axios 或 fetch 与 GitHub API 进行交互。需要在 GitHub 上创建个人访…

实现vue message

实现vue message

实现 Vue 消息提示组件 创建 Message 组件 在 src/components 目录下创建 Message.vue 文件,内容如下: <template> <tran…