diff算法
- 把原来的nodes和改变后的nodes进行比较 把不同的内容替换
- 改变列表数据时 有key可没有key执行的是不同的操作
- 没有key的话 拿nodes 改变前和改变后的数组进行patch对比 先判断类型是否一样 如果类型不一样 会创建新类型 如果类型一样内容不一样 就替换内容 以此类型
- 有key时 添加 先从数组头部进行path对比 对比在不相同时 跳出循环 再从尾部进行path遍历 遇到不同时 再次跳出循环 比较完成后发现多了数据后 会挂载新节点
- 有 key 减少 如果我们的旧节点多 删除操作的话 会吧多余的节点卸载掉
- 顺序改变 从旧的列表里面 去新列表找对应的节点 找到的话 把旧列表中的节点放到新的数组里面
key的作用
- key属性的主要用在Vue的虚拟dom算法。在新旧nodes对比时辨认VNodes
- 如果不使用key,Vue会使用一种最大限度减少动态元素并且尽可能的尝试就地修改/复用相同类型元素的算法
- 使用key时,它会基于key的变化重新排列元素顺序,并且会移除/销毁key不存在的元素

浙公网安备 33010602011771号