Vue.js 中使用 v-for 渲染数组时,默认会采用"就地更新"的策略,这意味着 Vue 会尽可能高效地更新 DOM,而不是完全重新渲染整个列表。
在删除数组中的元素时,Vue 会尽量复用 DOM 节点,而不是删除并重新创建节点。这就是你观察到的现象,删除了数组中的一个元素后,实际上是将该元素的数据从 Vue 实例的响应式数据中移除,并不一定对应着真正的 DOM 节点的删除。
如果你希望删除的元素对应的 DOM 节点被移除,可以使用 key 属性为 v-for 添加唯一标识符,Vue 将根据 key 属性来精准地更新 DOM 节点。
以下是一个例子:
<template>
<div>
<div v-for="(item, index) in items" :key="index">
{{ item }}
<button @click="removeItem(index)">Remove</button>
</div>
</div>
</template>
<script>
export default {
data() {
return {
items: ["项目1", "项目2", "项目3"],
};
},
methods: {
removeItem(index) {
this.items.splice(index, 1);
},
},
};
</script>
在上述代码中,<div v-for="(item, index) in items" :key="index"> 中的 :key 部分确保了每个 DOM 节点都有唯一的标识符。当删除某个元素时,Vue 将根据这个唯一标识符准确地找到对应的 DOM 节点并移除。
温馨提示:答案为网友推荐,仅供参考