不用index做key

45 阅读1分钟

答题思路

1:虚拟DOM

Vue不可以直接操作DOM结构,通过数据驱动、指令等机制间接操作DOM结构。修改模版中的数据时,Vue会触发重新渲染过程,调用render函数,返回一个虚拟DOM树。

2:DIFF算法

Vue讲新生成的新虚拟DOM与上一次渲染时生成的旧虚拟DOM进行比较,对比出哪个虚拟节点更改,找出虚拟节点,只更新这个虚拟节点所对应的真实节点,不用更新其他数据没发生改变的节点。

diff算法过程
  • 新旧虚拟DOM对比的时候,Diff 算法比较只会在同层级进行,不会跨层级比较。

  • 首先比较两个节点的类型,如果类型不同,则废弃旧节点并用新节点替代。

  • 对于相同类型的节点,进一步比较它们的属性。记录属性差异,以便生成相应的补丁。

  • 如果两个节点相同,继续递归比较它们的子节点,直到遍历完整个树。

  • 如果节点有唯一标识,可以通过这些标识来快速定位相同标识的节点。

  • 如果节点的相同,只是顺序变化,不会执行不必要的操作。