当前位置:首页 > VUE

vue增删改查简单实现

2026-01-11 20:31:13VUE

Vue 增删改查简单实现

以下是一个基于 Vue 3 的简单增删改查(CRUD)实现示例,使用 Vue 的 Composition API 和响应式数据管理。

vue增删改查简单实现

初始化项目

确保已安装 Vue 3 环境。可以通过以下命令创建一个新项目:

vue增删改查简单实现

npm init vue@latest vue-crud-demo
cd vue-crud-demo
npm install

核心代码实现

src/App.vue 中编写以下代码:

<template>
  <div>
    <h3>用户列表</h3>
    <table>
      <thead>
        <tr>
          <th>ID</th>
          <th>姓名</th>
          <th>操作</th>
        </tr>
      </thead>
      <tbody>
        <tr v-for="user in users" :key="user.id">
          <td>{{ user.id }}</td>
          <td>{{ user.name }}</td>
          <td>
            <button @click="editUser(user)">编辑</button>
            <button @click="deleteUser(user.id)">删除</button>
          </td>
        </tr>
      </tbody>
    </table>

    <h3>{{ editing ? '编辑用户' : '添加用户' }}</h3>
    <input v-model="currentUser.name" placeholder="请输入姓名" />
    <button @click="saveUser">{{ editing ? '更新' : '添加' }}</button>
  </div>
</template>

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

const users = reactive([
  { id: 1, name: '张三' },
  { id: 2, name: '李四' }
]);

const currentUser = reactive({
  id: null,
  name: ''
});

const editing = ref(false);

const saveUser = () => {
  if (editing.value) {
    const index = users.findIndex(u => u.id === currentUser.id);
    if (index !== -1) {
      users[index].name = currentUser.name;
    }
  } else {
    const newId = users.length > 0 ? Math.max(...users.map(u => u.id)) + 1 : 1;
    users.push({ id: newId, name: currentUser.name });
  }
  resetForm();
};

const editUser = (user) => {
  currentUser.id = user.id;
  currentUser.name = user.name;
  editing.value = true;
};

const deleteUser = (id) => {
  const index = users.findIndex(u => u.id === id);
  if (index !== -1) {
    users.splice(index, 1);
  }
};

const resetForm = () => {
  currentUser.id = null;
  currentUser.name = '';
  editing.value = false;
};
</script>

关键点说明

  • 数据管理:使用 reactive 创建响应式对象 userscurrentUserref 管理编辑状态。
  • 添加功能:通过 saveUser 方法判断当前是编辑还是添加,动态生成新 ID 并更新数组。
  • 编辑功能editUser 方法将选中用户数据填充到表单,标记为编辑状态。
  • 删除功能:通过 splice 从数组中移除指定 ID 的用户。

样式优化

可添加基础样式提升交互体验:

table {
  border-collapse: collapse;
  width: 100%;
}
th, td {
  border: 1px solid #ddd;
  padding: 8px;
}
button {
  margin: 0 5px;
  cursor: pointer;
}

扩展建议

  • 添加表单验证(如空值检查)。
  • 使用组件拆分逻辑(如单独的表单组件、列表组件)。
  • 集成后端 API(通过 axios 发送请求)。
  • 加入状态管理(如 Pinia)处理复杂数据流。

标签: 简单vue
分享给朋友:

相关文章

vue 实现目录

vue 实现目录

Vue 实现目录的方法 在 Vue 项目中实现目录功能,可以通过以下几种方式实现,具体取决于需求和技术栈。 使用 Vue Router 实现路由目录 Vue Router 是 Vue.js 的官方路…

vue实现目录

vue实现目录

Vue 实现目录功能 在 Vue 中实现目录功能通常需要动态生成目录结构,并支持点击跳转到对应内容区域。以下是几种常见实现方式: 基于滚动监听和动态生成 安装依赖(如需): npm inst…

vue实现屏幕共享

vue实现屏幕共享

Vue 实现屏幕共享的方法 使用 WebRTC 和 getDisplayMedia API 通过 navigator.mediaDevices.getDisplayMedia 捕获屏幕内容,结合 We…

vue实现录播播放

vue实现录播播放

Vue 实现录播播放 使用 video.js 实现 安装 video.js 和相关的 Vue 适配器: npm install video.js @videojs-player/vue 在 Vue…

vue实现打字机

vue实现打字机

Vue实现打字机效果 在Vue中实现打字机效果可以通过动态更新文本内容并添加延迟来实现。以下是几种常见的实现方法: 使用setInterval实现 <template> <d…

vue实现横向导航

vue实现横向导航

vue实现横向导航的方法 使用Flex布局实现横向导航 在Vue中可以通过Flex布局快速实现横向导航。创建一个组件,使用display: flex和flex-direction: row属性使导航项…