vue中v-for为什么不能用index代替id?

Key是dom用来做 diff算法比较用的,比较当前标签上的key还有它当前的标签名,如果key和标签名都一样时只是做了一个移动的操作,不会重新创建元素和删除元素,但index不是对象的唯一标识,例如删除数组的时候,部分数据的index都要发生变化,要重新渲染一次,影响了性能,有时还会产生bug,不涉及节点增删时,可以使用索引充当key值,不过最好使用数组中的对象中的唯一键作为key.即[{id:xx,...},{id:xxx,...}]中的id作为key.这可避免节点增删时出现数据或其他错误,

再比如当向数组中指定位置插入一个新元素后,因为这时候会重新更新index索引,对应着后面的虚拟DOM的key值全部更新了,这个时候还是会做不必要的更新,就像没有加key一样,因此index虽然能够解决key不冲突的问题,但是并不能解决复用的情况。如果是静态数据,用索引号index做key值是没有问题的。标签名一样,key一样这时候就会就地复用,如果标签名不一样,key一样不会复用。
————————————————
版权声明:本文为CSDN博主「陌上花开然不归矣」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yalywq/article/details/123815306

posted @ 2022-05-28 23:23  RHCHIK  阅读(182)  评论(0编辑  收藏  举报