vue实现添加div
使用 Vue 动态添加 div 元素
在 Vue 中动态添加 div 元素可以通过多种方式实现,以下是几种常见的方法:
使用 v-for 指令
通过 v-for 指令可以循环渲染多个 div 元素,适用于已知数量的情况。

<template>
<div>
<div v-for="(item, index) in items" :key="index">
{{ item.text }}
</div>
<button @click="addItem">添加 Div</button>
</div>
</template>
<script>
export default {
data() {
return {
items: []
}
},
methods: {
addItem() {
this.items.push({ text: '新添加的 Div' })
}
}
}
</script>
使用 $refs 和原生 DOM 操作
可以通过 $refs 获取 DOM 元素并使用原生 JavaScript 方法添加 div。

<template>
<div>
<div ref="container"></div>
<button @click="addDiv">添加 Div</button>
</div>
</template>
<script>
export default {
methods: {
addDiv() {
const newDiv = document.createElement('div')
newDiv.textContent = '动态添加的 Div'
this.$refs.container.appendChild(newDiv)
}
}
}
</script>
使用 Vue 的渲染函数
对于更复杂的场景,可以使用 Vue 的渲染函数来动态创建元素。
<template>
<div>
<div ref="container"></div>
<button @click="addDiv">添加 Div</button>
</div>
</template>
<script>
export default {
methods: {
addDiv() {
const newVNode = this.$createElement('div', '通过渲染函数添加的 Div')
this.$refs.container.appendChild(newVNode.elm)
}
}
}
</script>
使用组件动态注册
如果需要添加的是自定义组件,可以动态注册并渲染。
<template>
<div>
<component :is="currentComponent"></component>
<button @click="addComponent">添加组件</button>
</div>
</template>
<script>
export default {
data() {
return {
currentComponent: null,
componentCount: 0
}
},
methods: {
addComponent() {
this.currentComponent = {
template: `<div>动态组件 ${++this.componentCount}</div>`
}
}
}
}
</script>
注意事项
- 使用 v-for 时确保为每个元素提供唯一的 key
- 直接操作 DOM 可能会与 Vue 的响应式系统产生冲突,应谨慎使用
- 对于复杂场景,考虑使用 Vue 的插槽或动态组件功能
以上方法可以根据具体需求选择使用,v-for 方式是最符合 Vue 设计理念的实现方法。






