虚拟dom中,key的作用

虚拟DOM通过diff算法提高性能,key用于跟踪列表元素变更,避免不必要的DOM操作。使用唯一id作为key可精确识别变化,提高渲染效率。没有key时,DOM对比和更新范围更广;使用index可能导致错误的复用和渲染。
摘要由CSDN通过智能技术生成

无论是vue或者react,但我们遍历数组生成dom元素的时候,都会建议我们给每一个dom元素加上key值,而且key值最好用每一项的唯一id,而不用index值,这是为什么呢?

虚拟dom

先简单讲一下虚拟dom,如果想详细了解的朋友,可以看我的另外一篇专门讲虚拟dom的文章

传统方式用js操作DOM会有很多额外的DOM操作,例如,一个ul标签下有很多个li标签,其中只有一个li有变化,这种情况下如果使用新的ul去替代旧的ul,其实除了那个发生变化的li节点之外,其他节点都不需要重新渲染。由于DOM操作比较慢,所以这些DOM操作在性能上会有一定的浪费,避免这些不必要的DOM操作会提升很大一部分性能(减少重排重绘从而节省浏览器的性能开销)。
  为了避免不必要的DOM操作,虚拟DOM在虚拟节点映射到视图的过程中,将虚拟节点与上一次渲染视图所使用的虚拟节点(oldVnode)做对比,找出真正需要更新的节点来进行DOM操作,从而避免操作其他无任何改动的DOM。
其实虚拟DOM在Vue.js中主要做了两件事:

一:提供与真实DOM节点所对应的虚拟节点vnode
二:将虚拟节点vnode和旧虚拟节点oldVnode进行比对,然后更新视图
对两个虚拟节点进行对比是虚拟DOM中最核心的算法是diff算法,它可以判断出哪些节点发生了变化,从而只对发生了变化的节点进行更新操作。

key的作用

key值的作用,其实是:追踪列表中哪些元素被添加、被修改、被移除的辅助标志。
通俗点来说,就是他可以帮助我们快速对比两个虚拟dom对象,找到

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值