当前位置:首页 > VUE

vue增删改查简单实现

2026-02-25 14:24:02VUE

vue增删改查简单实现

vue增删改查简单实现

实现增删改查的基本结构

使用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 Router 中配置动态路由参数,通过 $route.params 获取详情 ID。示例路由配置: { path: '/detail/:i…

vue实现拍照

vue实现拍照

Vue实现拍照功能 在Vue中实现拍照功能通常需要结合浏览器的MediaDevices API和Canvas元素。以下是具体实现方法: 安装依赖(可选) 如果需要更简单的封装,可以安装vue-web…

vue实现粘贴

vue实现粘贴

Vue 实现粘贴功能的方法 在 Vue 中实现粘贴功能通常涉及监听粘贴事件并处理剪贴板数据。以下是几种常见的实现方式: 监听原生粘贴事件 通过 @paste 指令或原生 addEventListen…

vue实现picker

vue实现picker

Vue 实现 Picker 组件的方法 在 Vue 中实现 Picker 组件可以通过多种方式完成,以下是几种常见的实现方法: 使用原生 HTML 和 CSS 实现 通过 Vue 的模板和样式绑定,…

vue diff实现

vue diff实现

Vue Diff 算法实现原理 Vue 的虚拟 DOM Diff 算法(即 patch 过程)是其高效渲染的核心,主要通过对比新旧虚拟节点的差异,最小化 DOM 操作。以下是关键实现要点: 同层级比…

vue 实现loading

vue 实现loading

Vue 实现 Loading 的方法 使用 v-if 和 v-show 控制显示 在 Vue 中可以通过 v-if 或 v-show 控制 loading 组件的显示与隐藏。v-if 会动态创建或销毁…