重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要讲解了Vue中key的详细解析,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。
站在用户的角度思考问题,与客户深入沟通,找到民权网站设计与民权网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、做网站、企业官网、英文网站、手机端网站、网站推广、国际域名空间、虚拟主机、企业邮箱。业务覆盖民权地区。Vue中key的作用
key
的特殊attribute
主要用在Vue
的虚拟DOM
算法,在新旧Nodes
对比时辨识VNodes
。如果不使用key
,Vue
会使用一种大限度减少动态元素并且尽可能的尝试就地修改、复用相同类型元素的算法,而使用key
时,它会基于key
的变化重新排列元素顺序,并且会移除key
不存在的元素。此外有相同父元素的子元素必须有独特的key
,重复的key
会造成渲染错误。
描述
首先是官方文档的描述,当Vue
正在更新使用v-for
渲染的元素列表时,它默认使用就地更新的策略,如果数据项的顺序被改变,Vue
将不会移动DOM
元素来匹配数据项的顺序,而是就地更新每个元素,并且确保它们在每个索引位置正确渲染。这个默认的模式是高效的,但是只适用于不依赖子组件状态或临时DOM
状态的列表渲染输出,例如表单输入值。为了给Vue
一个提示,以便它能跟踪每个节点的身份,从而重用和重新排序现有元素,你需要为每项提供一个唯一 key attribute
,建议尽可能在使用v-for
时提供key attribute
,除非遍历输出的DOM
内容非常简单,或者是刻意依赖默认行为以获取性能上的提升。
简单来说,当在列表循环中使用key
时,需要使用key
来给每个节点做一个唯一标识,diff
算法就可以正确的识别此节点,找到正确的位置直接操作节点,尽可能地进行重用元素,key
的作用主要是为了高效的更新虚拟DOM
。此外,使用index
作为key
是并不推荐的做法,其只能保证Vue
在数据变化时强制更新组件,以避免原地复用带来的副作用,但不能保证大限度的元素重用,且使用index
作为key
在数据更新方面和不使用key
的效果基本相同。
示例
首先定义一个Vue
实例,渲染四个列表,分别为简单列表与复杂列表,以及其分别携带key
与不携带key
时对比其更新渲染时的速度,本次测试使用的是Chrome 81.0
,每次在Console
执行代码时首先会进行刷新重新加载界面,避免浏览器以及Vue
自身优化带来的影响。
Vue
- {{item}}
- {{item}}
- {{value}}
- {{value}}