美文网首页
使用v-for时:key的作用

使用v-for时:key的作用

作者: 踩坑怪At芬达 | 来源:发表于2019-10-30 11:37 被阅读0次

如果觉得还有点用,请您给我一个赞!您的赞是我坚持下去的动力

我们使用一个案例来分析,上代码,我利用transition来让大家直观的看到dom有没有被删除或增加

/**这里没有绑定key**/
<div @click="btnLabel" v-for="(item,idx) in listNoKey">
  <transition name="fade2" mode="out-in">
    <div @click="btnLabel">
      <p>{{item.name}}</p>
    </div>
  </transition>
</div>
/**这里绑定了key**/
<div v-for="(item,idx) in listWithKey">
  <transition name="fade2" mode="out-in">
    <div @click="btnLabel" :key="item.name">
      <p>{{item.name}}</p>
    </div>
  </transition>
</div>

然后当点击按钮的时候,我们改变第一个item的属性值,使它发生改变,我们看看dom渲染的结果怎么样

  • 第一段代码,由于没有给绑定key,vue会尽可能保留原来的dom,只修改它同原来的dom不一样的属性而已,所以只是p标签内的innerText发生了改变

  • 第二段代码,由于给v-for的子对象绑定了唯一key并且这个key值是同item.name同步的,所以当改变item.name属性的时候,vue认为老的dom被移除了,新的dom被创建了(因为只是用key来识别dom是不是原来的),所以看到了transition发生了效果

总结

  • key的原理
    key的原理就是将原来对比DOM细节来检测变动改为了通过key的比较来检测,更快更准确了

  • 什么时候需要用到key?
    1、当key绑定的属性发生变化时,希望立马可以发生transition动画效果的情况(常用)
    2、当key绑定的属性发生变化时,希望重新渲染该dom节点的时候

相关文章

网友评论

      本文标题:使用v-for时:key的作用

      本文链接:https://www.haomeiwen.com/subject/cakovctx.html