当前位置:首页 > VUE

vue实现curd

2026-01-07 23:25:07VUE

Vue实现CRUD操作

初始化Vue项目

使用Vue CLI创建新项目,安装必要依赖如axios用于HTTP请求

vue create crud-demo
cd crud-demo
npm install axios

组件结构设计

创建主要组件文件,通常包括列表显示、表单编辑等组件

// src/components/
- UserList.vue    // 展示数据列表
- UserForm.vue    // 新增/编辑表单
- App.vue         // 主入口组件

状态管理配置

使用Vuex管理共享状态,定义CRUD相关状态和mutations

vue实现curd

// store.js
const store = new Vuex.Store({
  state: {
    users: [],
    currentUser: null
  },
  mutations: {
    SET_USERS(state, users) {
      state.users = users
    },
    ADD_USER(state, user) {
      state.users.push(user)
    }
  }
})

API服务层

封装axios请求方法,与后端API交互

// api/user.js
import axios from 'axios'

export default {
  getUsers() {
    return axios.get('/api/users')
  },
  createUser(user) {
    return axios.post('/api/users', user)
  }
}

列表组件实现

展示数据并提供操作按钮

vue实现curd

<template>
  <table>
    <tr v-for="user in users" :key="user.id">
      <td>{{ user.name }}</td>
      <td>
        <button @click="editUser(user)">Edit</button>
        <button @click="deleteUser(user.id)">Delete</button>
      </td>
    </tr>
  </table>
</template>

<script>
export default {
  computed: {
    users() {
      return this.$store.state.users
    }
  },
  methods: {
    editUser(user) {
      this.$emit('edit', user)
    }
  }
}
</script>

表单组件实现

处理数据创建和更新

<template>
  <form @submit.prevent="handleSubmit">
    <input v-model="formData.name" placeholder="Name">
    <button type="submit">Submit</button>
  </form>
</template>

<script>
export default {
  props: {
    user: {
      type: Object,
      default: null
    }
  },
  data() {
    return {
      formData: this.user || { name: '' }
    }
  },
  methods: {
    handleSubmit() {
      this.$emit('submit', this.formData)
    }
  }
}
</script>

主组件整合

协调各子组件功能

<template>
  <div>
    <user-form @submit="saveUser"></user-form>
    <user-list @edit="editUser"></user-list>
  </div>
</template>

<script>
import { mapActions } from 'vuex'

export default {
  methods: {
    ...mapActions(['fetchUsers', 'createUser']),
    saveUser(user) {
      this.createUser(user)
    }
  },
  created() {
    this.fetchUsers()
  }
}
</script>

路由配置(可选)

如需多页面,配置Vue Router管理导航

const routes = [
  { path: '/users', component: UserList },
  { path: '/users/create', component: UserForm }
]

标签: vuecurd
分享给朋友:

相关文章

vue 实现在线预览

vue 实现在线预览

Vue 实现在线预览的常见方法 使用 iframe 嵌入 通过 iframe 标签可以嵌入多种类型的文件,如 PDF、图片、网页等。需要确保文件地址可访问。 <template> &…

vue实现用户信息表

vue实现用户信息表

Vue 实现用户信息表的方法 使用 Vue CLI 创建项目 安装 Vue CLI 并初始化项目: npm install -g @vue/cli vue create user-info-tabl…

vue聊天实现

vue聊天实现

Vue 聊天应用实现步骤 创建 Vue 项目 使用 Vue CLI 或 Vite 初始化项目,安装必要依赖(如 Vue 3、Element UI 或 Vuetify 用于 UI 组件)。 npm c…

vue实现波形

vue实现波形

实现波形效果的方法 在Vue中实现波形效果可以通过多种方式完成,常见的方法包括使用Canvas绘制、CSS动画或第三方库。以下是几种实现方案: 使用Canvas绘制波形 通过Canvas API动态…

vue实现tap

vue实现tap

Vue 实现 Tap 事件 在移动端开发中,Tap 事件比 Click 事件更常用,因为 Click 事件有 300ms 延迟。以下是几种在 Vue 中实现 Tap 事件的方法。 使用第三方库 安装…

vue 实现ztree

vue 实现ztree

在Vue中实现类似ZTree的功能,可以通过集成第三方库或自定义组件完成。以下是两种常见方法: 使用vue-tree组件 vue-tree是一个轻量级的Vue树形组件,支持复选框、懒加载等功能,适合…