• 使用v-for时为什么已经药加key


    为什么要用key?

    Vue 和 React 都实现了一套虚拟DOM,使我们可以不直接操作DOM元素,只操作数据便可以重新渲染页面。而隐藏在背后的原理便是其高效的Diff算法。

    Vue 和 React 的虚拟DOM的Diff算法大致相同,其核心是基于两个简单的假设:

    两个相同的组件产生类似的DOM结构,不同的组件产生不同的DOM结构。同一层级的一组节点,他们可以通过唯一的id进行区分。

    当页面的数据发生变化时,Diff算法只会比较同一层级的节点:

    如果节点类型不同,直接干掉前面的节点,再创建并插入新的节点。

    如果节点类型相同,则会重新设置该节点的属性,从而实现节点的更新。

    总而言之,key的作用主要是为了高效的更新虚拟DOM 。另外vue中在使用相同标签名元素的过渡切换时,也会使用到key属性,其目的也是为了让vue可以区分它们,否则vue只会替换其内部属性而不会触发过渡效果。

    这里,也建议尽可能在使用 v-for 时提供 key attribute,除非遍历输出的 DOM 内容非常简单。

    为什么不能用index作为key?

    因为在插入数据或者删除数据的时候,会导致后面的数据的key绑定的index变化,进而导致从新渲染,效率会降低。

    这个key应该绑定你v-for循环数据中的唯一值,这样就会大大减少渲染次数,数据更新时就不用一一替换,从而使用插入新数据的算法。

  • 相关阅读:
    hdu1430 魔板(康拓展开 bfs预处理)
    网络流EdmondsKarp算法模板理解
    poj3020 建信号塔(匈牙利算法 最小覆盖边集)
    bzoj 2465 小球
    bzoj 1822 冷冻波
    bzoj 1040 骑士
    Codeforces Round #460 (Div. 2)
    bzoj 1072 排列perm
    Codeforces Round #459 (Div. 2)
    bzoj 1087 互不侵犯King
  • 原文地址:https://www.cnblogs.com/yixiancheng/p/15154113.html
Copyright © 2020-2023  润新知