Vue 中增加 key ,是为了更精准的定位到元素,从而减少渲染。那具体这个更精准的定位是什么?以及为什么能减少渲染呢?我们在这一章节讲述。
要聊这个之前,必须要有虚拟 DOM 的概念,这个不得不聊。
虚拟对象就是一种用来描述真实 DOM 的 js 对象。这样我们就可以通过对比 vnode(虚拟 DOM 树的节点),知道需要更新的 DOM 结构。
关于真实 DOM 与虚拟 DOM 的关系,你可以看做真实 DOM 为真实的建筑,而虚拟 DOM 为建筑的结构图,通过虚拟 DOM 可以构建真实 DOM。
根据新旧子树的 vnode 执行 patch 进行组件更新,而 key 是 patch 中对比 vnode 不同的一个环节。
const patch = (n1,n2,container,anchor = nul