v-for 中的key值的作用

本文介绍了Vue.js中v-for指令的key值作用,解释了其在列表渲染时如何帮助Vue进行更高效的DOM操作。通过一个例子展示了在不设置key和设置key时,插入新元素导致的DOM更新策略的区别,说明了key对于提高diff算法效率的重要性。
摘要由CSDN通过智能技术生成

v-for中的key值的作用

当我们在使用v-for列表渲染时,通常要绑定 key 。

<ul>
    <li v-for="item in items" :key="item.id">{{item.title}}</li>
</ul>

当 Vue.js 用 v-for 正在更新已渲染过的元素列表时,它默认用“就地复用”策略。如果数据项的顺序被改变,Vue 将不会移动 DOM
元素来匹配数据项的顺序, 而是简单复用此处每个元素,并且确保它在特定索引下显示已被渲染过的每个元素

那么key 究竟有什么作用呢?

key是给每一个vnode的唯一id,也是diff的一种优化策略,可以根据key,更准确, 更快的找到对应的vnode节点

设置key与不设置key区别

例如:在B 和 C 之间要插入 F

<template>
  <div class="home">
    <ul>
      <li v-for="item in items" :key="item.id">{{ item.title }}</li>
    </ul>
  </div>
</template>
<script>
export default {
  name: "Home",
  components: {},
  data() {
    return {
      items: [
        { id: "1", title: "A" },
        { id: "2", title: "B" },
        { id: "3", title: "C" },
        { id: "4", title: "D" },
        { id: "5", title: "E" },
      ],
    };
  },
  mounted() {
    setTimeout(() => {
      this.items.splice(2, 0, {id: "6", title: "F"}); 
    }, 2000);
  },
};
</script>

在不设置key的情况下,vue会这样操作:
在这里插入图片描述
即把C更新成F,D更新成C,E更新成D,最后再插入E,很没有效率。

在使用key的情况:vue会进行这样的操作:

在这里插入图片描述
Diff算法就可以正确的识别此节点,找到正确的位置区插入新的节点,提高了diff效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值