详解Vue的列表渲染


Posted in Vue.js onNovember 20, 2021

1. v-for:遍历数组内容(常用)

in 也可以用 of 代替

<body>
	<div id="div1">
		<li v-for='(p,i) in persons' :key=i>
			{{p.name}}--{{p.age}}
			<!-- 张--18
				 李--19
				 刘--17 -->
		</li>
	</div>
</body>
<script type="text/javascript">
	Vue.config.produnctionTps=false
 	new Vue({
		el:"#div1",
		data:{
			persons:[
				{id:'001',name:"张",age:18},
				{id:'002',name:"李",age:19},
				{id:'002',name:"刘",age:17},
			]
		}
	})
</script>

2. v-for:遍历对象属性(常用)

<body>
	<div id="div1">
		<li v-for='(p,k) in persons' :key=k>
			{{p}}--{{i}}
			<!-- 张--name
				 18--age -->
		</li>
	</div>
</body>
<script type="text/javascript">
	Vue.config.produnctionTps=false
 	new Vue({
		el:"#div1",
		data:{
			persons:{
				name:"张",
				age:18
			}
		}
	})

3.遍历字符串(不常用)

<body>
	<div id="div1">
		<li v-for='(p,i) in str' :key=i>
			{{p}}--{{i}}
			<!-- a--0 
				 b--1
				 c--2
				 d--3
				 e--4 -->
		</li>
	</div>
</body>
<script type="text/javascript">
	Vue.config.produnctionTps=false
 	new Vue({
		el:"#div1",
		data:{
			str:"abcde"
		}
	})
</script>

4.遍历指定次数(不常用)

<body>
	<div id="div1">
		<li v-for='(p,i) in 5' :key=i>
			{{p}}--{{i}}
			<!-- 1--0
				 2--1
				 3--2
				 4--3
				 5--4 -->
		</li>
	</div>
</body>

5.key 的作用和原理

在上面都用的index 作为key,但是在破坏顺序修改dom以及有input内容就会出错。仅在用于渲染页面而不需要修改页面时可用index作为key.

强烈建议用数据的唯一标识,如id、手机号、邮箱号作为key

1.虚拟DOM中key的作用:

key是虚拟DOM对象的标识,当数据发生变化时,Vue会根据[新数据]生成[新的虚拟DOM] ,随后Vue进行[新?拟DOM]与[旧?拟DOM]的差异比较,比较规则如下:

2.对比规则:

(1).旧虚拟DOM中找到了与新虚拟DOM相同的key:

①.若?拟DOM中内容没变, 直接使用之前的真实DOM!

②.若?拟DOM中内容变了,则生成新的真实DOM,随后替换掉页面中之前的真实DOM。

(2).旧虚拟DOM中未找到与新虚拟DOM相同的key创建新的真实DOM,随后渲染到到页面。

3.用index作为key可能会引发的问题:

1.若对数据进行:逆序添加、逆序删除等破坏顺序操作:

会产生没有必要的真实DOM更新==>界面效果没问题,但效率低。

2.如果结构中还包含输入类的DOM:

会产生错误DOM更新==> 界面有问题。

4.开发中如何选择key?

1.最好使用每条数据的唯一标识作 为key,比如id、 手机号、身份证号、学号等唯一值。

2.如果不存在对数据的逆序添加、逆序删除等破坏顺序操作,仅用于渲染列表用于展示,使用index作为key是没有问题的。

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注三水点靠木的更多内容!

Vue.js 相关文章推荐
vue3.0+vue-router+element-plus初实践
Dec 02 Vue.js
vuex Module将 store 分割成模块的操作
Dec 07 Vue.js
vue实现两个区域滚动条同步滚动
Dec 13 Vue.js
VUE中鼠标滚轮使div左右滚动的方法详解
Dec 14 Vue.js
详解Vue的异步更新实现原理
Dec 22 Vue.js
基于vue的video播放器的实现示例
Feb 19 Vue.js
vue前端工程的搭建
Mar 31 Vue.js
vue完美实现el-table列宽自适应
May 08 Vue.js
vue-element-admin项目导入和导出的实现
May 21 Vue.js
Vue3.0中Ref与Reactive的区别示例详析
Jul 07 Vue.js
vue中 this.$set的使用详解
Nov 17 Vue.js
vue3种table表格选项个数的控制方法
Apr 14 Vue.js
详解Vue slot插槽
Nov 20 #Vue.js
详解Vue router路由
Nov 20 #Vue.js
vue中 this.$set的使用详解
如何用vue实现网页截图你知道吗
Vue3中的Refs和Ref详情
Nov 11 #Vue.js
详细聊聊vue中组件的props属性
一定要知道的 25 个 Vue 技巧
You might like
SONY ICF-SW55的电路分析
2021/03/02 无线电
无数据库的详细域名查询程序PHP版(5)
2006/10/09 PHP
PHP HTML代码串 截取实现代码
2009/06/29 PHP
Base64在线编码解码实现代码 演示与下载
2011/01/08 PHP
PHP 字符串正则替换函数preg_replace使用说明
2011/07/15 PHP
php+mysqli批量查询多张表数据的方法
2015/01/29 PHP
php通过exif_read_data函数获取图片的exif信息
2015/05/21 PHP
php 解析xml 的四种方法详细介绍
2016/10/26 PHP
PHP数组内存利用率低和弱类型详细解读
2017/08/10 PHP
IE与FireFox的兼容性问题分析
2007/04/22 Javascript
JS截取url中问号后面参数的值信息
2014/04/29 Javascript
php常见的页面跳转方法汇总
2015/04/15 Javascript
JavaScript实现随机替换图片的方法
2015/04/16 Javascript
JavaScript仿支付宝密码输入框
2015/12/29 Javascript
AngularJS中实现用户访问的身份认证和表单验证功能
2016/04/21 Javascript
tangram.js库实现js类的方式实例分析
2018/01/06 Javascript
关于vue中 $emit的用法详解
2018/04/12 Javascript
vue框架搭建之axios使用教程
2018/07/11 Javascript
JavaScript常用工具方法封装
2019/02/12 Javascript
小程序富文本提取图片可放大缩小
2020/05/26 Javascript
一篇文章读懂Python赋值与拷贝
2018/04/19 Python
python实现windows壁纸定期更换功能
2019/01/21 Python
利用PyCharm Profile分析异步爬虫效率详解
2019/05/08 Python
Python箱型图绘制与特征值获取过程解析
2019/10/22 Python
Flask框架搭建虚拟环境的步骤分析
2019/12/21 Python
利用Python计算KS的实例详解
2020/03/03 Python
pandas分批读取大数据集教程
2020/06/06 Python
numpy 矩阵形状调整:拉伸、变成一位数组的实例
2020/06/18 Python
canvas小画板之平滑曲线的实现
2020/08/12 HTML / CSS
ProBikeKit新西兰:自行车套件,跑步和铁人三项装备
2017/04/05 全球购物
Anthropologie英国:美国家喻户晓的休闲服装和家居产品品牌
2018/12/05 全球购物
MYSQL基础面试题
2012/05/13 面试题
工商管理专业实习生自我鉴定
2013/09/29 职场文书
初中三好学生事迹材料
2014/01/13 职场文书
优秀女职工事迹材料
2014/02/06 职场文书
nginx静态资源的服务器配置方法
2022/07/07 Servers