-
key的作用主要是为了高效的更新虚拟DOM,其原理是vue在patch的过程中可以通过key精准判断两个节点是否是同一个,从而避免频繁更新不同元素,使得整个patch过程更加高效,减少dom操作,提高性能。
-
另外,若不设置key还可能导致列表更新时引发一些隐蔽的bug。
-
vue中在使用相同标签名的元素的进行过渡切换的时候,也会使用到key,其目的是为了让vue可以对他们进行区分,尤其是在v-for的时候,否则vue只会替换其内部的属性而不会触发过渡效果。
-
另外使用index作为key也会有一些问题,尽量避免使用。以element组件库为例,比如我们在用el-CheckBox-group的时候使用index作为key,如果我往被勾选的节点前面去插入一个节点,你就会发现被勾选的节点变成了你插入的节点的,然后原本被勾选的节点则是变成了未勾选的状态,所以我们要尽量避免的使用index作为key。