当前位置:首页 > VUE

vue增删改查简单实现

2026-01-06 23:11:36VUE

基础环境搭建

确保已安装Node.js和Vue CLI。通过以下命令创建Vue项目:

npm install -g @vue/cli
vue create vue-crud-demo
cd vue-crud-demo
npm run serve

数据模型定义

src目录下创建data.js存放模拟数据:

export default [
  { id: 1, name: '张三', age: 25 },
  { id: 2, name: '李四', age: 30 }
]

核心组件实现

创建UserList.vue组件:

<template>
  <div>
    <input v-model="newUser.name" placeholder="姓名">
    <input v-model.number="newUser.age" placeholder="年龄" type="number">
    <button @click="addUser">添加</button>

    <table>
      <tr v-for="user in users" :key="user.id">
        <td>{{ user.name }}</td>
        <td>{{ user.age }}</td>
        <td>
          <button @click="editUser(user)">编辑</button>
          <button @click="deleteUser(user.id)">删除</button>
        </td>
      </tr>
    </table>

    <div v-if="editing">
      <input v-model="currentUser.name">
      <input v-model.number="currentUser.age" type="number">
      <button @click="updateUser">更新</button>
    </div>
  </div>
</template>

<script>
import userData from '@/data'

export default {
  data() {
    return {
      users: [...userData],
      newUser: { id: null, name: '', age: null },
      editing: false,
      currentUser: {}
    }
  },
  methods: {
    addUser() {
      this.newUser.id = Date.now()
      this.users.push({...this.newUser})
      this.newUser = { id: null, name: '', age: null }
    },
    deleteUser(id) {
      this.users = this.users.filter(user => user.id !== id)
    },
    editUser(user) {
      this.editing = true
      this.currentUser = {...user}
    },
    updateUser() {
      const index = this.users.findIndex(u => u.id === this.currentUser.id)
      this.$set(this.users, index, {...this.currentUser})
      this.editing = false
    }
  }
}
</script>

状态管理优化(可选)

对于复杂应用可引入Vuex:

npm install vuex

创建store.js

import Vue from 'vue'
import Vuex from 'vuex'
import userData from '@/data'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    users: [...userData]
  },
  mutations: {
    ADD_USER(state, user) {
      state.users.push(user)
    },
    DELETE_USER(state, id) {
      state.users = state.users.filter(u => u.id !== id)
    },
    UPDATE_USER(state, updatedUser) {
      const index = state.users.findIndex(u => u.id === updatedUser.id)
      Vue.set(state.users, index, updatedUser)
    }
  }
})

表单验证增强

使用Vuelidate进行客户端验证:

npm install vuelidate

在组件中添加:

vue增删改查简单实现

import { required, minValue } from 'vuelidate/lib/validators'

export default {
  validations: {
    newUser: {
      name: { required },
      age: { required, minValue: minValue(1) }
    }
  },
  methods: {
    addUser() {
      this.$v.newUser.$touch()
      if (!this.$v.newUser.$invalid) {
        // 验证通过逻辑
      }
    }
  }
}

注意事项

  1. 使用v-model.number处理数字类型输入
  2. 对象操作使用展开运算符避免引用问题
  3. 数组更新使用Vue.setthis.$set确保响应式
  4. v-for循环添加唯一的:key属性
  5. 生产环境应替换为真实API调用

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

相关文章

vue实现付款

vue实现付款

Vue 实现付款功能 在 Vue 中实现付款功能通常需要集成第三方支付网关(如支付宝、微信支付、Stripe 等)。以下是常见的实现方法: 集成支付宝/微信支付 安装必要的依赖(如 axios 用于…

vue实现treeselect

vue实现treeselect

Vue TreeSelect 实现方法 使用 Vue 实现 TreeSelect 组件可以通过以下几种方式完成,包括使用现成的第三方库或自行封装组件。 使用第三方库 推荐使用成熟的第三方 TreeS…

vue app 实现

vue app 实现

Vue App 实现步骤 创建Vue项目 使用Vue CLI或Vite初始化项目。Vue CLI适合传统项目,Vite适合现代轻量级应用。 npm create vue@latest my-vu…

vue实现回顶部

vue实现回顶部

实现方法一:使用 window.scrollTo 在Vue组件中,可以通过调用 window.scrollTo 方法平滑滚动到页面顶部。该方法接受一个配置对象,指定滚动行为为平滑(smooth)。…

vue实现动态隐藏

vue实现动态隐藏

动态隐藏的实现方法 在Vue中实现动态隐藏可以通过多种方式,常见的有条件渲染、动态绑定样式或类名。以下是几种具体实现方法: 使用v-if或v-show指令 <template> &…

vue制作css

vue制作css

在Vue中制作CSS的方法 Vue提供了多种灵活的方式来编写和管理CSS,可以根据项目需求选择适合的方法。 使用内联样式 内联样式可以直接在Vue组件的模板中编写,适用于简单的样式需求。 <…