参考文章:blog.csdn.net/weixin_4568…
写在最前面 | Vue源码系列-Vue中文社区 (vue-js.com)
问题
有两个item-wrap 第一个item-wrap有四个item,第二个item-wrap有三个item。结果发现item-wrap里使用的组件是重复的,即第二个item-wrap的三个item使用的是第一个item-wrap的前三个
问题复现
1.data中设置一个name属性作为唯一值,在mounted中为其赋值
2.监听其状态
3.切换item-wrap,查看其状态。可以看到 切换第二个item-wrap时,其值都是第一个item-wrap的组件标识
4.给组件添加key值
5.再次查看状态 item-wrap-2 -> item-wrap-1 -> item-wrap-2,可以看到,每一个值都不一样,他会重新渲染这个组件
结论
在使用v-if的时候,vue会在生成vnode的时候选择性的忽略它不进行渲染,如果在不加入key的情况下。vue会识别不出相似的组件导致不重新渲染等问题。增加key值可以增加该组件的唯一性帮助vue对其进行正常的操作