vue 实现添加删除 div
使用 Vue 实现动态添加和删除 Div
在 Vue 中动态添加和删除 Div 可以通过数据驱动的方式实现。以下是具体实现方法:
数据绑定与列表渲染
通过 v-for 指令渲染一个 Div 列表,并使用数组来管理这些 Div:
<template>
<div>
<button @click="addDiv">添加 Div</button>
<div v-for="(item, index) in divList" :key="index">
{{ item.content }}
<button @click="removeDiv(index)">删除</button>
</div>
</div>
</template>
<script>
export default {
data() {
return {
divList: []
}
},
methods: {
addDiv() {
this.divList.push({
content: `Div ${this.divList.length + 1}`
})
},
removeDiv(index) {
this.divList.splice(index, 1)
}
}
}
</script>
使用唯一标识作为 key
为了提高渲染性能,建议为每个 Div 分配唯一 ID 作为 key:
<template>
<div>
<button @click="addDiv">添加 Div</button>
<div v-for="item in divList" :key="item.id">
{{ item.content }}
<button @click="removeDiv(item.id)">删除</button>
</div>
</div>
</template>
<script>
let nextId = 1
export default {
data() {
return {
divList: []
}
},
methods: {
addDiv() {
this.divList.push({
id: nextId++,
content: `Div ${this.divList.length + 1}`
})
},
removeDiv(id) {
this.divList = this.divList.filter(item => item.id !== id)
}
}
}
</script>
添加动画效果
可以为添加和删除操作添加过渡动画:
<template>
<div>
<button @click="addDiv">添加 Div</button>
<transition-group name="fade" tag="div">
<div v-for="item in divList" :key="item.id" class="item">
{{ item.content }}
<button @click="removeDiv(item.id)">删除</button>
</div>
</transition-group>
</div>
</template>
<style>
.fade-enter-active, .fade-leave-active {
transition: opacity 0.5s;
}
.fade-enter, .fade-leave-to {
opacity: 0;
}
.item {
margin: 10px 0;
padding: 10px;
border: 1px solid #ddd;
}
</style>
使用组件封装
对于更复杂的 Div 内容,可以将其封装为组件:
<template>
<div>
<button @click="addDiv">添加 Div</button>
<div v-for="item in divList" :key="item.id">
<custom-div :content="item.content" @remove="removeDiv(item.id)" />
</div>
</div>
</template>
<script>
import CustomDiv from './CustomDiv.vue'
export default {
components: {
CustomDiv
},
data() {
return {
divList: []
}
},
methods: {
addDiv() {
this.divList.push({
id: Date.now(),
content: `Div ${this.divList.length + 1}`
})
},
removeDiv(id) {
this.divList = this.divList.filter(item => item.id !== id)
}
}
}
</script>
在 CustomDiv.vue 中:
<template>
<div class="custom-div">
{{ content }}
<button @click="$emit('remove')">删除</button>
</div>
</template>
<script>
export default {
props: {
content: String
}
}
</script>
这些方法提供了在 Vue 中实现动态添加和删除 Div 的不同方案,可以根据具体需求选择适合的方式。







