Vue - 你知道Vue中key的工作原理吗

难度级别:中级及以上                                 提问概率:80% 


在Vue项目开发中,并不推荐使用索引做为key,以为key必须是唯一的,可以使用服务端下发的唯一ID值,也不推荐使用随机值做为key,因为如果每次渲染都监听到不一样的key,那么节点将无法复用,这与Vue节省性能的初衷是违背的。当Vue更新DOM时,它可以利用唯一的key来进行新旧节点的比较,基于这一特点,Vue在进行diff算法的时候,可以更加高效快捷的决定某些节点需要做移动、新增或是删除的操作,从而大大提升从虚拟DOM到真实DOM的更新效率。

那么Vue中key的工作原理是什么样的呢?首先虚拟DOM是一个大的数据对象,对象节点数据便是真实DOM的模拟实现,在真正更新DOM之前,需要对新旧虚拟节点进行比较;然后便会利用key值来比较两个新旧节点,Vue认为如果key相同,那么新旧节点就是同一个,不需要做出额外操作,从而达到复用节点的效果;而如果key值不同,那么Vue就需要进行移动、新增或是删除的操作。


刷题思考

    key在Vue源码中的实现原理其实并不简单,在现实面试场景中,却很少有面试官会突然奇想,希望求职者在纸上当场写一段源码。再加上疫情过后很多面试会选择线上进行,这就要求开发人员尽量去读源码,并且能够以口头表达的形式,非常清晰的描述出其实现原理。

    很多人可能会想,既然这样,那我直接背这些描述不就行了,何必去读源码呢?了解一个技术的实现最好的办法就是去读它的源码,这样可以让我们在业务开发中更加熟知其实现特性,减少未知问题的产生,久而久之也会使自己的技术有所精进。不过最直接的好处就是,万一面试官突然问起某一处实现细节的时候,至少自己可以对答如流。


类似考点

    既然key要求稳定且唯一,而且它是用来做比较用的,那么面试官对于key的使用,很可能还会问以下这些问题,例如请你说一说列表渲染中,为什么不建议使用索引做为key?例如开发Vue组件的时候,不小心key出现重复值了,会抛出什么错误?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

经海路大白狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值