当前位置:首页 > VUE

vue增删改查简单实现

2026-02-25 14:24:02VUE

实现增删改查的基本结构

使用Vue 3的Composition API配合<script setup>语法

<script setup>
import { ref } from 'vue'

const items = ref([
  { id: 1, name: 'Item 1' },
  { id: 2, name: 'Item 2' }
])
const newItem = ref('')
const editingId = ref(null)
const editedName = ref('')
</script>

添加功能实现

<template>
  <input v-model="newItem" placeholder="Add new item">
  <button @click="addItem">Add</button>
</template>

<script setup>
const addItem = () => {
  if (newItem.value.trim()) {
    items.value.push({
      id: Date.now(),
      name: newItem.value.trim()
    })
    newItem.value = ''
  }
}
</script>

删除功能实现

<template>
  <ul>
    <li v-for="item in items" :key="item.id">
      {{ item.name }}
      <button @click="deleteItem(item.id)">Delete</button>
    </li>
  </ul>
</template>

<script setup>
const deleteItem = (id) => {
  items.value = items.value.filter(item => item.id !== id)
}
</script>

修改功能实现

<template>
  <ul>
    <li v-for="item in items" :key="item.id">
      <span v-if="editingId !== item.id">{{ item.name }}</span>
      <input v-else v-model="editedName">
      <button 
        v-if="editingId !== item.id" 
        @click="startEdit(item)"
      >Edit</button>
      <button 
        v-else 
        @click="saveEdit(item.id)"
      >Save</button>
    </li>
  </ul>
</template>

<script setup>
const startEdit = (item) => {
  editingId.value = item.id
  editedName.value = item.name
}

const saveEdit = (id) => {
  const index = items.value.findIndex(item => item.id === id)
  if (index !== -1) {
    items.value[index].name = editedName.value
  }
  editingId.value = null
}
</script>

查询功能实现

<script setup>
const searchQuery = ref('')

const filteredItems = computed(() => {
  return items.value.filter(item => 
    item.name.toLowerCase().includes(searchQuery.value.toLowerCase())
  )
})
</script>

<template>
  <input v-model="searchQuery" placeholder="Search...">
  <ul>
    <li v-for="item in filteredItems" :key="item.id">
      {{ item.name }}
    </li>
  </ul>
</template>

完整组件示例

<template>
  <div>
    <h2>CRUD Demo</h2>

    <!-- 添加 -->
    <div>
      <input v-model="newItem" placeholder="Add new item">
      <button @click="addItem">Add</button>
    </div>

    <!-- 搜索 -->
    <div>
      <input v-model="searchQuery" placeholder="Search...">
    </div>

    <!-- 列表展示 -->
    <ul>
      <li v-for="item in filteredItems" :key="item.id">
        <span v-if="editingId !== item.id">{{ item.name }}</span>
        <input v-else v-model="editedName">

        <button 
          v-if="editingId !== item.id" 
          @click="startEdit(item)"
        >Edit</button>
        <button 
          v-else 
          @click="saveEdit(item.id)"
        >Save</button>

        <button @click="deleteItem(item.id)">Delete</button>
      </li>
    </ul>
  </div>
</template>

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

const items = ref([
  { id: 1, name: 'Item 1' },
  { id: 2, name: 'Item 2' }
])
const newItem = ref('')
const editingId = ref(null)
const editedName = ref('')
const searchQuery = ref('')

const filteredItems = computed(() => {
  return items.value.filter(item => 
    item.name.toLowerCase().includes(searchQuery.value.toLowerCase())
  )
})

const addItem = () => {
  if (newItem.value.trim()) {
    items.value.push({
      id: Date.now(),
      name: newItem.value.trim()
    })
    newItem.value = ''
  }
}

const deleteItem = (id) => {
  items.value = items.value.filter(item => item.id !== id)
}

const startEdit = (item) => {
  editingId.value = item.id
  editedName.value = item.name
}

const saveEdit = (id) => {
  const index = items.value.findIndex(item => item.id === id)
  if (index !== -1) {
    items.value[index].name = editedName.value
  }
  editingId.value = null
}
</script>

vue增删改查简单实现

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

相关文章

vue实现微博印象

vue实现微博印象

实现微博印象功能的核心思路 微博印象功能通常指用户发布微博后,系统自动分析文本内容并提取关键词或标签,以可视化形式展示。Vue实现该功能需要结合文本分析、关键词提取和前端渲染技术。 文本分析与关键词…

vue中实现显示和隐藏

vue中实现显示和隐藏

控制显示与隐藏的方法 在Vue中实现元素的显示和隐藏可以通过多种方式完成,以下是常见的几种方法: 1. 使用v-if指令v-if根据条件动态添加或移除DOM元素,适合需要频繁切换的场景。当条件为f…

vue实现剪辑

vue实现剪辑

Vue 实现视频剪辑功能 在Vue中实现视频剪辑功能通常需要结合HTML5的<video>元素和第三方库(如FFmpeg.js或Video.js)。以下是几种常见的实现方法: 使用FF…

vue实现波形

vue实现波形

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

vue实现答辩

vue实现答辩

Vue 实现答辩系统的关键步骤 项目初始化与配置 使用 Vue CLI 或 Vite 创建项目,安装 Vue Router 管理路由,Pinia/Vuex 进行状态管理。配置 ESLint 和 Pre…

vue实现双向

vue实现双向

Vue 实现双向绑定的方法 Vue 的双向绑定主要通过 v-model 指令实现,它结合了数据绑定和事件监听,适用于表单元素(如 input、select、textarea 等)。以下是几种常见的实现…