vue的虚拟dom渲染真实dom的过程中首先会对新老VNode的开始和结束位置进行标记:oldStartIdx、oldEndIdx、newStartIdx、newEndIdx

发布时间 2023-11-13 19:41:39作者: 龙陌

关于Vue中的diff算法说法错误的是( )

A
比较只会在同层级节点进行比较, 不会跨层级比较

B
在diff比较的过程中,循环从两边向中间收拢。

C
vue的虚拟dom渲染真实dom的过程中首先会对新老VNode的开始和结束位置进行标记:oldStartIdx、oldEndIdx、newStartIdx、newEndIdx

D
当老VNode节点的start和新VNode节点的end满足sameVnode时,新VNode节点会被提到start位置

正确答案:D

官方解析:
老 VNode 节点的start和新VNode节点的end满足 sameVnode 时,这说明这次数据更新后oldStartVnode已经跑到了oldEndVnode后面去了,
这时候在patchVnode后,还需要将当前真实dom节点移动到oldEndVnode的后面,同时老VNode节点开始索引加 1,新VNode节点的结束索引减 1。

https://www.jianshu.com/p/cdb4ad82df20