您当前的位置: 首页 >  学无止境 >  文章详情

v-for中的key和diff算法

时间: 2023-10-10 【学无止境】 阅读量:共676人围观

简介 今天学习了v-for中的key和diff算法之间的关系,了解了vue是如何高效的渲染DOM。

#官方的解释

  • 1.key属性主要用在Vue的虚拟DOM算法,在新旧nodes对比时辨识VNodes

  • 2.如果不使用key,Vue会使用一种最大限度减少动态元素并且尽可能的尝试就地修改/复用相同类型元素的算法

  • 3.而使用key时,它会基于key的变化重新排列元素顺序,并且会移除/销毁key不存在的元素

#没有key的操作会分为三步

  • 1.先获取新旧节点的长度并且去最小长度

  • 2.遍历长度小的节点,对新旧节点依次patch(容易理解点就是对比节点类型和内容)

  • 3.判断新旧长度,若旧的短,则新增节点,反之删除节点

#有key执行操作

  • 1.从头开始进行遍历、比较,若key不一致,就break跳出循环

  • 2.从尾部开始进行遍历、比较

  • 3.如果旧节点遍历完毕,但是依然有新的节点,那么就新增节点

  • 4.如果新的节点遍历完毕,但是依然有旧的节点,那么就移除旧节点

  • 5.最特色的情况,中间还有很多未知的或者乱序的节点

在这个当中,vue的做法是尽可能的复用重复出现的节点,把旧的当中没有在新的里出现的节点移除,把出现在新的节点中而旧的节点中没有的新增

文章评论
总共 0 条评论
这篇文章还没有收到评论,赶紧来抢沙发吧~
Copyright (C) 2023- 小祥驿站 保留所有权利 蜀ICP备 17034318号-2  公安备案号 50010302004554