key是dom节点的惟一标识,与内容相关联vue
vue
和react
的虚拟DOM
的Diff
算法大体相同,其核心是基于两个简单的假设 react
首先讲一下diff
算法的处理方法,对操做先后的dom
树同一层的节点进行对比,一层一层对比,以下图:算法
当某一层有不少相同的节点时,也就是列表节点时,Diff
算法的更新过程默认状况下也是遵循以上原则。 dom
好比一下这个状况:咱们要在A、B、C、D、E
列表中B
后面插入F
spa
当key=index
时,先后dom
树是这样子的:
把C
更新成F,D
更新成C,E
更新成D
,最后再插入E
,是否是很没有效率?code
因此咱们须要使用key
来给每一个节点作一个惟一标识,Diff
算法就能够正确的识别此节点,找到正确的位置区插入新的节点。blog
key=index
和key=id
对比:vue
中列表循环需加:key="惟一标识"
惟一标识能够是item
里面id index
等,由于vue
组件高度复用增长Key
能够标识组件的惟一性,为了更好地区别各个组件 key
的做用主要是为了高效的更新虚拟DOM
rem