什么是key?

vue中列表循环需要加上的一个属性,不加,系统就会提示报错,:key=“唯一标识” 唯一标识可以是item里面id(index)等,因为vue组件高度复用性,增加Key可以标识组件的唯一性,为了更好地区别各个组件 key的作用主要是为了高效的更新虚拟DOM。

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

比如:在我们使用v-for的时候,给加上的,相当于id

<ul><li v-for="item in str" :key="item.id">{{item}}</li>
</ul>

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

<Comp :key="+new Date()" />

总结:在vue中,key是给每一个vnode的唯一id,也是diff的一种优化策略,可以根据key,更准确, 更快的找到对应的vnode节点

示例区别:

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

如果不用key,Vue会采用就地复地原则:最小化element的移动,并且会尝试尽最大程度在同适当的地方对相同类型的element,做patch或者reuse。

如果使用了key,Vue会根据keys的顺序记录element,曾经拥有了key的element如果不再出现的话,会被直接remove或者destoryed。

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

不推荐v-for里的index当做key使用

当以数组为下标的index作为key值时,其中一个元素(例如增删改查)发生了变化就有可能导致所有的元素的key值发生改变
diff算法时比较同级之间的不同,以key来进行关联,当对数组进行下标的变换时,比如删除第一条数据,那么以后所有的index都会发生改变,那么key自然也跟着全部发生改变,所以index作为key值是不稳定的,而这种不稳定性有可能导致性能的浪费,导致diff无法关联起上一次一样的数据。因此,能不使用index作为key就不使用index。

vue中v-for使用key相关推荐

  1. vue中for循环的key值为随机数,则子标签的点击事件或可能无效

    学习记录下,具体原因请移步下面两个链接 https://blog.csdn.net/deciduous_leaves/article/details/114630664 https://blog.cs ...

  2. [vue] 你知道vue中key的原理吗?说说你对它的理解

    [vue] 你知道vue中key的原理吗?说说你对它的理解 key的作用主要是为了高效的更新虚拟DOM; 如果没有唯一的key, 数据更新时, 相同节点更新前后无法准确一一对应起来,会导致更新效率降低 ...

  3. vue 用key拿对象value_利用 WeakMap 对 Vue 新建数组中的对象赋予 :key

    需求 在 Vue 中,对组件进行循环都需要加入key以便"就地复用",可是在某些情况下,我们需要新建多个对象,而这些对象不是从后端获取到的,而是前端生成的,没有唯一值,且 Vue ...

  4. 【Vue2.0】—Vue中的key有什么作用?(四)

    [Vue2.0]-Vue中的key有什么作用?(四) <div id="root"><!-- 遍历数组 --><ul><button @c ...

  5. Vue中key属性的作用

    Vue中key属性的作用 在列表渲染时使用key属性 使用key属性强制替换元素 在列表渲染时使用key属性 相信大多数Vue开发者接触到key属性的时候是使用v-for进行列表渲染的时候,如果不使用 ...

  6. vue核心面试题:v-for中为什么要用key

    一.v-for中为什么要用key 1.vue中列表循环需加:key="唯一标识" 唯一标识尽量是item里面id等,因为vue组件高度复用增加Key可以标识组件的唯一性,为了更好地 ...

  7. vue中v-for为何要加key?index为何不推荐作为key

    在使用vue组件的时候,我们经常会遇到v-for必须要加key值 来举个例子进行说明吧! 不存在key的情况 <!--* @Author: angula* @Date: 2020-08-07 0 ...

  8. multiusb key找不到驱动程序_尤大-Vue中为什么不建议用index作为key?

    前言 Vue 中的 key 是用来做什么的?为什么不推荐使用 index 作为 key?常常听说这样的问题,本篇文章带你从原理来一探究竟. 阿里巴巴腾讯前端面试经验,最完整面试真题分享!​www.ji ...

  9. vue中的key的作用?

    一.写在前面 下面总结一下,vue中的key的作用,在vue中我们可能在两种情况下使用key,第一种情况下就是在v-if中,第二种情况下就是在v-for中使用key.下面我们来看一下key在其中起到的 ...

最新文章

  1. 关于新技术的引入原则 ——从零开始学架构
  2. python爬虫案例-Python3爬虫三大案例实战分享
  3. 转:初学者简易 .vimrc编写指南
  4. Unity3D学习笔记——Unity3D的窗口布局
  5. Android httpUrlConnection的基本使用
  6. Codeforces Round #640 (Div. 4)(ABCDE)
  7. 信号处理:单边、双边频谱间的相互转换(转)
  8. VC++注册,卸载OCX控件,以及判断是否注册
  9. 大型论坛系统环境搭建(20万日IP负载平衡实战)–Nginx+Apache2+PHP+MySQL
  10. 北风网VIP6级学习视频地址
  11. 太阳能计算机屏幕是什么材质,电脑显示器表面是什么材质的 什么是液晶玻璃...
  12. 无线路由器无线桥接(一)
  13. 部署基于SAWP的低成本开源CRM系统
  14. 为你的掘金和 GitHub 设定个性域名
  15. 短视频合集怎么做,教你快速合并的技巧
  16. py3_VSCode 配置 Python 环境以及初识 Python 正则表达式
  17. 微信公众号支付(二)
  18. XPO:Session管理与缓存--测试篇
  19. IOS 插屏广告弹窗
  20. 用Python搞定豆瓣上征婚交友的小姐姐们~

热门文章

  1. 阿里p9教你Java学到什么程度才能叫精通?
  2. vc6.0 图片显示(个人笔记)
  3. B站韩顺平java学习笔记(十六)-- 多线程基础章节
  4. 网络推广都有那些平台
  5. 电子电路设计基本概念100问(二)【学习目标:原理图、PCB、阻抗设计、电子设计基本原则、基本原器件等】
  6. Linux下xmms
  7. WIDER FACE AND PEDESTRIAN CHALLENGE - WIDER CHALLENGE
  8. Squid 缓存代理(二)---ACL访问控制、日志分析
  9. java 枚举型 默认值,c# - 选择Enum类型的默认值而不必更改值
  10. linux之mini2440内核移植