问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

vue中key的原理吗?说说你对它的理解

发布网友 发布时间:2023-03-21 10:48

我来回答

1个回答

热心网友 时间:2023-10-09 10:05

开始之前,我们先还原两个实际工作场景

那么这背后的逻辑是什么, key 的作用又是什么?

一句话来讲

当我们在使用 v-for 时,需要给单元加上 key

用 +new Date() 生成的时间戳作为 key ,手动强制触发重新渲染

举个例子:

创建一个实例,2秒后往 items 数组插入数据

在不使用 key 的情况, vue 会进行这样的操作:

[图片上传中...(image-135c49-1631019652027-0)]

分析下整体流程:

一共发生了3次更新,1次插入操作

在使用 key 的情况: vue 会进行这样的操作:

一共发生了0次更新,1次插入操作

通过上面两个小例子,可见设置 key 能够大大减少对页面的 DOM 操作,提高了 diff 效率

其实不然,文档中也明确表示

这个默认的模式是高效的,但是只适用于不依赖子组件状态或临时 DOM 状态 (例如:表单输入值) 的列表渲染输出

建议尽可能在使用 v-for 时提供 key ,除非遍历输出的 DOM 内容非常简单,或者是刻意依赖默认行为以获取性能上的提升

源码位置:core/vdom/patch.js

这里判断是否为同一个 key ,首先判断的是 key 值是否相等如果没有设置 key ,那么 key 为 undefined ,这时候 undefined 是恒等于 undefined

updateChildren 方法中会对新旧 vnode 进行 diff ,然后将比对出的结果用来更新真实的 DOM
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
太平盛世专辑曲目 梦见自家灶台缺个角 如何看待宝马3系? - 知乎 为什么缺爱的女人婚姻难幸福快乐 求一些好看的架空言情小说,最好是以第一人称为视角的。小白文请绕。 带双目相机的无人机有哪些 禄莱1982年后 工业3d相机国内有哪些靠谱的厂商,特别是在阳光和弱光环境 海康全新双目单线相机 | 消盲区、抑杂光,引领3D检测新突破 10米范围内实现零盲区大FoV深度测量,奥比中光发布Gemini 2双目... vuev-for中:key如何选择 react、vue中的key有什么作用?(key的内部原理) vue中:key的作用 带有韦字好听的微信昵称 山东英语听力考试报名时间是什么时候? 山东高考口语考试报名时间 1688担保交易和诚e赊选哪个 股市吃饼是什么意思 股市摔碗的意思是什么呢 淘宝上买家那里有v3v2的是怎么回事 哪来的 为什么淘宝0信誉买家会是V3会员?关键是我小店还刚开没信誉的,要是被搞了,不是死的很惨?? 在淘宝购物买家有5个花下面的V3表达是什么意思 Picc导管导丝污染了,消毒后还可以在用吗?急急急 微众银行APP是个怎么样的产品呢? WORD文档中,没有输入页眉的页面不算在总的页次当中,如何设置? 文档共5页,如何让第一页的的页码从2开始(2,3,4,5,6,),而页次从1/5开始(1/5,2/5.3/5,4/5,5/5) QQ空间里好友印象在哪里 苹果电脑怎样可以看到qq空间里面别人对我的印象评论 苹果笔记本安装win7 怎么重装系统 雀巢婴儿奶粉怎么样 龙口中通,圆通快递停运了吗 专线网络怎么设置? 阁楼天窗窗帘怎么安装,斜屋顶天窗窗帘怎么安装 中草药名方:拨云退翳丸的功效与作用 早安心语:愿你的生命有够多的云翳,造成一个 北窖劳动局的电话号码是多少?有谁知道,急急… 请问工商银行五一上班时间是什么时候? 手机识别不了密码? 华为手机为什么突然不能识别开机密码了,字体也变了,这是怎么回事? 平安证券条件选股怎么设置 里面没有好友怎么解封 怎么进入手机注册的界面? 孙子爱吃小龙虾爷爷偷100多斤,这位男子的行为违反了哪些法律? 农丰虾王小龙虾养殖有哪些技术可以偷学呢 天猫精灵绿灯亮表示什么 西门冰箱 bcd-260kk28a2620w 怎么除霜 印度签证面签意味着 日本签证 韩国面签是什么意思啊,可以详细介绍一下吗 深圳公积金按照工资的多少缴纳 风筝的线轴叫什么名字