当前位置:首页 > VUE

vue实现增删查改

2026-02-24 22:29:49VUE

vue实现增删查改的方法

基本结构搭建

使用Vue CLI或直接引入Vue.js创建项目。准备基础模板包含数据列表展示区域和操作按钮区。数据通常存储在组件的data属性中,以数组形式保存。

<template>
  <div>
    <ul>
      <li v-for="(item, index) in items" :key="index">
        {{ item.name }}
        <button @click="deleteItem(index)">删除</button>
      </li>
    </ul>
    <input v-model="newItem" placeholder="新增项目"/>
    <button @click="addItem">添加</button>
  </div>
</template>

数据查询展示

在data中定义初始数据数组,使用v-for指令循环渲染列表。通过计算属性可实现筛选查询功能。

data() {
  return {
    items: [
      { id: 1, name: '项目1' },
      { id: 2, name: '项目2' }
    ],
    newItem: ''
  }
}

新增数据实现

通过v-model绑定输入框,在addItem方法中处理新增逻辑。注意数据校验和唯一性检查。

vue实现增删查改

methods: {
  addItem() {
    if(this.newItem.trim()) {
      this.items.push({
        id: Date.now(),
        name: this.newItem
      });
      this.newItem = '';
    }
  }
}

删除数据操作

根据索引或唯一标识删除数组元素,使用数组的splice方法或filter方法。

deleteItem(index) {
  this.items.splice(index, 1);
}

修改数据功能

添加编辑状态标记和修改方法,通过双向绑定实现表单编辑。

vue实现增删查改

<li v-for="(item, index) in items" :key="item.id">
  <span v-if="!item.editing">{{ item.name }}</span>
  <input v-else v-model="item.name" @blur="saveEdit(index)"/>
  <button @click="toggleEdit(index)">编辑</button>
</li>

methods: {
  toggleEdit(index) {
    this.items[index].editing = !this.items[index].editing;
  },
  saveEdit(index) {
    this.items[index].editing = false;
  }
}

与后端API交互

使用axios等库处理HTTP请求,将操作映射到RESTful接口。

import axios from 'axios';

methods: {
  async fetchItems() {
    const res = await axios.get('/api/items');
    this.items = res.data;
  },
  async addItem() {
    await axios.post('/api/items', { name: this.newItem });
    this.fetchItems();
  }
}

完整组件示例

整合所有功能的标准组件示例,包含基本CRUD操作。

<template>
  <div>
    <input v-model="newItem" @keyup.enter="addItem"/>
    <button @click="addItem">添加</button>

    <ul>
      <li v-for="item in filteredItems" :key="item.id">
        <span v-if="!item.editing">{{ item.name }}</span>
        <input v-else v-model="item.name" @blur="saveEdit(item.id)"/>
        <button @click="toggleEdit(item.id)">编辑</button>
        <button @click="deleteItem(item.id)">删除</button>
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [],
      newItem: '',
      searchTerm: ''
    }
  },
  computed: {
    filteredItems() {
      return this.items.filter(item => 
        item.name.includes(this.searchTerm)
      );
    }
  },
  methods: {
    toggleEdit(id) {
      const item = this.items.find(i => i.id === id);
      item.editing = !item.editing;
    }
  }
}
</script>

状态管理方案

对于复杂应用,建议使用Vuex集中管理状态,确保数据流清晰可追踪。

// store.js
export default new Vuex.Store({
  state: {
    items: []
  },
  mutations: {
    ADD_ITEM(state, item) {
      state.items.push(item);
    }
  }
})

// 组件中
methods: {
  addItem() {
    this.$store.commit('ADD_ITEM', { 
      id: Date.now(),
      name: this.newItem 
    });
  }
}

标签: vue
分享给朋友:

相关文章

vue穿梭框组件实现

vue穿梭框组件实现

实现基础穿梭框组件 在Vue中实现穿梭框组件,可以使用<el-transfer>(Element UI)或手动实现。以下是手动实现的核心逻辑: <template> &…

vue实现一个标签选择

vue实现一个标签选择

Vue 标签选择组件实现 基础实现 使用 Vue 的 v-for 和 v-model 指令可以快速实现标签选择功能: <template> <div class="tag-se…

vue实现视窗

vue实现视窗

Vue 实现视窗功能 在 Vue 中实现视窗功能通常涉及监听浏览器窗口大小变化、响应式布局或创建自定义弹窗组件。以下是几种常见实现方式: 监听浏览器窗口大小变化 使用 Vue 的 mounted 和…

vue   实现单选

vue 实现单选

Vue 实现单选功能 在 Vue 中实现单选功能可以通过多种方式,以下是几种常见的方法: 使用原生 <input type="radio"> 绑定 v-model 通过 v-model…

vue 实现轮播

vue 实现轮播

Vue 实现轮播的方法 使用第三方库(如 Swiper) 安装 Swiper 库: npm install swiper 在 Vue 组件中引入 Swiper: <template&…

vue首页实现

vue首页实现

实现Vue首页的基本步骤 创建一个Vue首页通常涉及项目初始化、页面结构设计、路由配置和组件开发。以下是具体实现方法: 初始化Vue项目 使用Vue CLI或Vite快速搭建项目结构: npm i…