Patch中是否多进行了一次无意义的比较?

在源码中如果key值不存在,则需要调用findIdxInOld方法。


findIdxInOld会从oldStartIdx到oldEndIdx-1遍历oldCh去调用sameVnode。但是实际上前面的四种头尾比较newStartVnode已经和oldCh的第一个节点和最后一个节点比较过了。
image
所以findIdxInOldy应该从oldStartIdx+1到oldEndIdx-1去遍历oldCh,从oldStartIdx到oldEndIdx-1遍历oldCh会重复比较一次了