请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于不使用key的问题

双越老师,这几个章节diff算法很给力,算是看到的所有视频或者资料里面最详细的了,自己阅读vue的diff,经常被细枝末节带走,陷进去,老师的这几章真的是很清晰(一如既往)

有个问题可能表述的不准确:
视频最后 老师列举了 for循环 ABCD,不带key的情况,会删除旧的 插入新的
但是vue的v-for好像不是这样,因为 如果不带key会有默认的就地复用策略:
图片描述

图片描述

所以 我认为 写key的作用:

  1. diff算法找到相同的vNode,性能好 更快,不需要删除插入
  2. 保证唯一性(避免就地复用状态 例如 visit状态带来的影响)

正在回答 回答被采纳积分+3

插入代码

2回答

慕粉3871079 2021-02-23 14:46:49

那就地更新与移动更新哪种更高效呢

0 回复 有任何疑惑可以回复我~
  • 双越 #1
    这些细节我也没研究,我觉得没必要研究这个,有这些时间精力我宁可去做别的事情。同理,面试去问这些细节,回报率也很低。
    回复 有任何疑惑可以回复我~ 2021-02-23 17:20:23
双越 2020-03-04 20:20:31

讲课时可能不能去深入每个框架对 key 的处理细节,要不然复杂度就太高了,大家估计都得听乱了。

diff 算法本身就是一个挺大的范围,key 是其中一个,所以能把 key 的核心价值介绍清楚,就已经可以满足课程目标的需要,满足面试的需要。

不过,你自己去深入的挖掘了细节,这个还是要点赞的,加油!

0 回复 有任何疑惑可以回复我~
  • jie_wu #1
    老师,最后总结不使用key会全部删除重建,是不是不太对?前面说不使用key默认是undefined==undefined,这样也就是两者是相同的DOM,直接进行修改,感觉这样才能和v-for就地更新策略相契合呀
    回复 有任何疑惑可以回复我~ 2021-04-12 23:39:17

相似问题

登录后可查看更多问答,登录/注册

问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号