vue for循环不建议使用index作为key的原因

先看下面一个例子:

<template>
  <div>
    <button @click="clickHandler">删除</button>
    <template>
      <div v-for="(item, index) in list" :key="index" >{
   {
   item.name}}</div>
    </template>
  </div>
</template>

<script>
export default {
   
  name: 'index',
  data () {
   
    return {
   
      list: [
        {
   
          id: 1,
          name: 'Person1'
        },
        {
   
          id: 2,
          name: 'Person2'
        },
        {
   
          id: 3,
          name: 'Person3'
        },
        {
   
          id: 4,
          name: 'Person4'
        }
      ]
    }
  },
  methods: {
   
    clickHandler () {
   
      // 删除第二个数据
      this.list.splice(1, 1)
    }
  }
}
</script>

<style scoped>

</style>

当点击按钮时,会删除数组第二个数据,这样就会导致原数组第二个数据之后数据的index发生改变,从而导致person3,和person4节点的更新,增加了额外的性能开销;
如果将key由绑定index改为绑定id,上述性能开销的问题就不会存在,因为更换key绑定时,删除第二个数据,person3和person4的id并未发生改变,dom也不会发生更新;

结论:

  • 对于没有交互的简单数组使用for时,而且数组没有唯一的id时,可考虑使用index作为key;
  • 其它情况,尽可能使用唯一的id作为for循环的key值

参考链接

相关推荐

  1. vue for循环建议使用index作为key原因

    2024-01-11 11:46:02       59 阅读
  2. 小程序for循环key作用

    2024-01-11 11:46:02       61 阅读
  3. Vue中key作用原理

    2024-01-11 11:46:02       95 阅读
  4. vue key原理作用

    2024-01-11 11:46:02       27 阅读
  5. CSS中z-index生效原因和解决办法

    2024-01-11 11:46:02       32 阅读
  6. key作用

    2024-01-11 11:46:02       39 阅读
  7. 在ios上z-index作用问题总结

    2024-01-11 11:46:02       61 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-11 11:46:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-11 11:46:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-01-11 11:46:02       82 阅读
  4. Python语言-面向对象

    2024-01-11 11:46:02       91 阅读

热门阅读

  1. python使用单例模式加载config.ini配置文件

    2024-01-11 11:46:02       54 阅读
  2. C#Selenium WebDriver备忘录

    2024-01-11 11:46:02       49 阅读
  3. pytorch无法把共享内存写入文件

    2024-01-11 11:46:02       56 阅读
  4. 何为算法之算法趣闻

    2024-01-11 11:46:02       54 阅读
  5. 用Bert进行文本分类

    2024-01-11 11:46:02       57 阅读
  6. flink中的row类型详解

    2024-01-11 11:46:02       57 阅读