v-for中key的做用

key是dom节点的惟一标识,与内容相关联vue

vuereact的虚拟DOMDiff算法大体相同,其核心是基于两个简单的假设 react

首先讲一下diff算法的处理方法,对操做先后的dom树同一层的节点进行对比,一层一层对比,以下图:
算法

当某一层有不少相同的节点时,也就是列表节点时,Diff算法的更新过程默认状况下也是遵循以上原则。 dom

好比一下这个状况:咱们要在A、B、C、D、E列表中B后面插入F
spa

key=index时,先后dom树是这样子的:
image.png
C更新成F,D更新成C,E更新成D,最后再插入E,是否是很没有效率?code

因此咱们须要使用key来给每一个节点作一个惟一标识,Diff算法就能够正确的识别此节点,找到正确的位置区插入新的节点。
image.pngblog

key=indexkey=id对比:

vue中列表循环需加:key="惟一标识" 惟一标识能够是item里面id index等,由于vue组件高度复用增长Key能够标识组件的惟一性,为了更好地区别各个组件 key的做用主要是为了高效的更新虚拟DOMrem

参考:
https://www.jianshu.com/p/4bd...get

相关文章
相关标签/搜索