diff算法

  1. 把原来的nodes和改变后的nodes进行比较 把不同的内容替换
  2. 改变列表数据时 有key可没有key执行的是不同的操作
  3. 没有key的话 拿nodes 改变前和改变后的数组进行patch对比 先判断类型是否一样 如果类型不一样 会创建新类型 如果类型一样内容不一样 就替换内容 以此类型
  4. 有key时  添加 先从数组头部进行path对比 对比在不相同时 跳出循环 再从尾部进行path遍历 遇到不同时 再次跳出循环  比较完成后发现多了数据后 会挂载新节点
  5. 有 key 减少 如果我们的旧节点多 删除操作的话  会吧多余的节点卸载掉
  6. 顺序改变 从旧的列表里面 去新列表找对应的节点 找到的话 把旧列表中的节点放到新的数组里面  

key的作用

  1. key属性的主要用在Vue的虚拟dom算法。在新旧nodes对比时辨认VNodes
  2. 如果不使用key,Vue会使用一种最大限度减少动态元素并且尽可能的尝试就地修改/复用相同类型元素的算法
  3. 使用key时,它会基于key的变化重新排列元素顺序,并且会移除/销毁key不存在的元素
posted @ 2021-12-11 20:35    阅读(59)  评论(0)    收藏  举报