你知道vue中key的作用和工作原理吗说说你对它的理解。

你知道vue中key的作用和工作原理吗说说你对它的理解。,第1张

key 的作用是为了高效的更新虚拟 DOM,其原理是 vue在 path中调用 updateChildren 中会遍历所以的节点,如果没有设置 key 的时候,会认为比较的两个节点为同一个节点,会导致频繁的更新不同的元素,导致了频繁的 DOM *** 作如果设置了 key,在updateChildren过程中会很准备的判断节点是不是相同节点,从而避免频繁更新不同元素,使得 path 更加高效,减少DOM *** 作,提高性能

第步创建静态HTML5页面vmodelhtml并引入vueminjs文件

第二步body元素内插入div并div引入input输入框label标签

第三步调用初始化Vuejs并给输入框赋值

第四步预览该静态页面页面显示默认显示值

第五步减少输入框字符发现面内容跟着减少

第六步添加输入框字符面内容随增加展示数据双向绑定

开始之前,我们先还原两个实际工作场景

那么这背后的逻辑是什么, key 的作用又是什么?

一句话来讲

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

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

举个例子:

创建一个实例,2秒后往 items 数组插入数据

在不使用 key 的情况, vue 会进行这样的 *** 作:

[上传中(image-135c49-1631019652027-0)]

分析下整体流程:

一共发生了3次更新,1次插入 *** 作

在使用 key 的情况: vue 会进行这样的 *** 作:

一共发生了0次更新,1次插入 *** 作

通过上面两个小例子,可见设置 key 能够大大减少对页面的 DOM *** 作,提高了 diff 效率

其实不然,文档中也明确表示

这个默认的模式是高效的,但是只适用于不依赖子组件状态或临时 DOM 状态 (例如:表单输入值) 的列表渲染输出

建议尽可能在使用 v-for 时提供 key ,除非遍历输出的 DOM 内容非常简单,或者是刻意依赖默认行为以获取性能上的提升

源码位置:core/vdom/patchjs

这里判断是否为同一个 key ,首先判断的是 key 值是否相等如果没有设置 key ,那么 key 为 undefined ,这时候 undefined 是恒等于 undefined

updateChildren 方法中会对新旧 vnode 进行 diff ,然后将比对出的结果用来更新真实的 DOM

vuekey可以是任意数据类型

vue$set:设置的属性对象 可以是Object或者数组

设置的key值可以 string或者number类型

设置的值可以是任意值。

以上就是关于你知道vue中key的作用和工作原理吗说说你对它的理解。全部的内容,包括:你知道vue中key的作用和工作原理吗说说你对它的理解。、vue v-model怎么获取data1: [key:'']里的某个数据、vue中key的原理吗说说你对它的理解等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9703153.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存