ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

vue中key的用法

2026/8/15 3:47:50 拓冰建站 浏览量
vue中key的用法

加key是提升vue渲染效率,减少DOM操作。

vue列表元素的更新机制:

        当列表元素没有设置key的时候,vue判断是否操作这个DOM元素,是根据新旧两次数据的元素顺序进行对比,看一下元素内容是否发生变化。发生变化vue就操作这个DOM元素,没有变就不操作这个DOM元素。

        当列表元素设置了key的时候,vue判断新旧dom内容是否发生变化的时候,不再按照顺序对比了,而是找相同key值得元素进行对比,不受顺序得影响了。能始终保证只操作变化了得DOM元素。

 问题:遍历数据得索引能否作为key值?

     不能,因为索引是按元素顺序生成的。且始终从0开始,因此和不设置key效果一样了。

案例:

不加:key="item":

<template><div><h3 style="color: #f69">key的用法</h3><p v-for="item in arr">{{ item }}</p><!-- <button @click="arr.push(4)">添加</button> --><button @click="arr.unshift(4)">添加</button><!-- 用:key 元素单个添加,不改变原有元素,不用:key 元素都变动,改变原有元素 --></div>
</template>
<script>
export default {data() {return {arr: [1, 2, 3],};},methods: {},created: {},
};
</script>

 运行:

加key="item":

<template><div><h3 style="color: #f69">key的用法</h3><p v-for="item in arr" :key="item">{{ item }}</p><!-- <button @click="arr.push(4)">添加</button> --><button @click="arr.unshift(4)">添加</button><!-- 用:key 元素单个添加,不改变原有元素,不用:key 元素都变动,改变原有元素 --></div>
</template>
<script>
export default {data() {return {arr: [1, 2, 3],};},methods: {},created: {},
};
</script>

运行: