Vue key的优点
key的使用就是在updateChildren方法中
没用key的情况
1.进行sameVnode对比时候,没有key值,返回的都是相同节点
2.进行patchVnode对比节点,找到差异,更新dom
3.直到找到判断文本节点是否相同时,循环执行
4.直到找到更新节点,samevnode因为没有key值,依然会继续执行
5.直到最后,会找到所有更新的dom进行多次节点更新操作
使用key值
- 内容未发送变化项进行对比
- 找到sameVnode节点key值不同,会从后向前比较
- 都是文本节点,不会更新dom
- 直到找到oldStartIdx大于oldEndIdx,条件成立,进行dom更新,只进行了一次
因为设置了key,不相同的值会从后向前寻找,如果条件相同,不会更新dom,会重用之前的操作节点
只有新增项,因为不相同,只操作一次
不设置key,更新会多次,插入也不止会一次,dom操作很繁琐