Vue 列表渲染 key的原理和作用详解
作者:TA_WORLD 时间:2024-05-03 15:11:21
列表渲染 key 的原理和作用
key就是为该节点做身份标识,如果对key绑定index的值,那么很容易出现问题:
1.若对数据进行:逆序添加、逆序删除等破坏顺序操作,会产生没有必要的真实DOM更新——页面效果没有问题,但是效率有2问题
2.如果解构中还包含输入类的DOM,会产生错误DOM更新——界面有问题
问题案例分析:
点击按钮,在列表的前面添加一个对象
<div id="root">
<button @click.once="add">添加一个老刘</button>
<ul>
<li v-for="(p, index) in persons" :key="index">
{{p.name}}---{{p.age}}
<input type="text">
</li>
</ul>
</div>
var vm = new Vue({
el:"#root",
data:{
persons:[
{id:"001", name:"张三", age:15},
{id:"002", name:"李四", age:16},
{id:"003", name:"王五", age:17}
]
},
methods: {
add(){
const p = {id:"004", name:"老刘", age:20}
this.persons.unshift(p)
}
},
})
展现出来是这样的一个效果
当我们将姓名填入输入框中
然后点击按钮,观察出现的问题
我们会发现,表单的最上方出现了老刘,但是列表中的内容和输入框的内容并没有相等
解决方法:我们将:key="index"改为:key="id"
key的原理分析
初始数据
拿到初始数据根据初始数据生成 虚拟DOM将虚拟DOM转为真实的DOM
新数据
拿到新的数据(包含老刘)根据数据生成 虚拟DOM虚拟DOM与初始数据的虚拟DOM进行对比算法(li中的文本信息出现了差异,但是input是相同的,虚拟的DOM是没有数据的,在页面输入的内容存储在真实的DOM中)文本信息——新数据替代了初始数据,input内容被保留
key的作用
来源:https://blog.csdn.net/qq_56303170/article/details/120874470
标签:Vue,列表渲染,key,原理,作用
0
投稿
猜你喜欢
Python绘制惊艳的桑基图的示例详解
2021-09-21 17:24:52
Python爬虫入门案例之爬取二手房源数据
2021-07-13 15:31:41
Go语言实现遗传算法的实例代码
2024-02-10 01:04:54
Go简单实现协程方法
2024-02-06 05:00:12
python super函数使用方法详解
2022-04-15 21:45:17
网页制作,改变你的思维方式
2007-09-29 13:12:00
Pandas 对Dataframe结构排序的实现方法
2021-11-26 09:06:48
Pytorch中的VGG实现修改最后一层FC
2023-03-08 07:08:48
Python matplotlib绘图设置图例案例
2021-08-17 07:05:04
linux 下python多线程递归复制文件夹及文件夹中的文件
2021-06-28 03:27:44
MySQL对window函数执行sum函数可能出现的一个Bug
2024-01-23 23:37:42
详解Python中图像边缘检测算法的实现
2021-02-08 09:18:27
JS实现字符串转驼峰格式的方法
2024-04-10 13:58:45
Oracle数据安全面面观
2024-01-20 02:12:38
SQL的密码管理的六个危险判断
2012-01-05 19:07:21
如何用ASP.NET连接MS SQLServer数据库?
2010-06-11 19:27:00
五个影响mysql性能的关键配置
2010-08-08 09:13:00
一文搞懂MySQL XA如何实现分布式事务
2024-01-22 23:25:19
Django models文件模型变更错误解决
2021-05-14 11:02:10
Python+OpenCV实现图像融合的原理及代码
2022-08-01 00:03:52