key
是为 Vue 中的虚拟 DOM 节点(vNode)标记唯⼀性的 id。
key 的作用
作用: 给虚拟 dom 添加标识, (优化复用对比策略, 优化渲染性能)
-
vue 的更新机制 (差异化更新) 对比新旧虚拟 dom, 找出不同的部分, 进行更新视图
为什么对比虚拟 dom, 而不对比真实的 dom ? 真实的 dom 太复杂, 对比起来性能太差
-
虚拟 dom: 使用 js 对象的方式, 模拟真实的 dom 结构 { type: 'div', className: 'box' , children: [] }
属性的量大大的减少了, 没有真实 dom 的那么多无效的属性, 对比起来性能高很多
-
diff 算法: 默认的对比(diff) 机制, 同层兄弟元素, 是按照下标进行对比的, 但是加了 key, 就相当于给虚拟 dom 加了个标识
对比策略, 就是对相同 key 的元素进行对比了, 在列表 v-for 中, key 的使用尤为常见, 可以用于优化渲染性能
总结: key 就是给 虚拟 dom 添加了一个 标识, 优化了对比策略!!!