详解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 相关文章推荐
vue+vant实现购物车全选和反选功能
Nov 17 Vue.js
Vue用mixin合并重复代码的实现
Nov 27 Vue.js
vue实现防抖的实例代码
Jan 11 Vue.js
vue动态设置路由权限的主要思路
Jan 13 Vue.js
vue实现简易计算器功能
Jan 20 Vue.js
vue登录页实现使用cookie记住7天密码功能的方法
Feb 18 Vue.js
vue点击弹窗自动触发点击事件的解决办法(模拟场景)
May 25 Vue.js
vite+vue3.0+ts+element-plus快速搭建项目的实现
Jun 24 Vue.js
Vue监视数据的原理详解
Feb 24 Vue.js
vue postcss-px2rem 自适应布局
May 15 Vue.js
Vue组件化(ref,props, mixin,.插件)详解
May 15 Vue.js
vue3不同环境下实现配置代理
May 25 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
php下使用iconv需要注意的问题
2010/11/20 PHP
使用Discuz关键词服务器实现PHP中文分词
2014/03/11 PHP
php获取文件名后缀常用方法小结
2015/02/24 PHP
php微信公众号开发(4)php实现自定义关键字回复
2016/12/15 PHP
PHP使用strrev翻转中文乱码问题的解决方法
2017/01/13 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
如何用javascript控制上传文件的大小
2006/10/26 Javascript
js实现页面打印功能实例代码(附去页眉页脚功能代码)
2009/12/15 Javascript
使用js Math.random()函数生成n到m间的随机数字
2014/10/09 Javascript
探讨JavaScript中的Rest参数和参数默认值
2015/07/29 Javascript
JS动态创建元素的两种方法
2016/04/20 Javascript
基于JavaScript实现鼠标箭头移动图片跟着移动
2016/08/30 Javascript
JavaScript实现获取用户单击body中所有A标签内容的方法
2017/06/05 Javascript
JavaScript体验异步更好的解决办法
2018/01/08 Javascript
VueAwesomeSwiper在VUE中的使用以及遇到的一些问题
2018/01/11 Javascript
vue中对象数组去重的实现
2020/02/06 Javascript
Python实现简单截取中文字符串的方法
2015/06/15 Python
Python实现的本地文件搜索功能示例【测试可用】
2018/05/30 Python
基于python绘制科赫雪花
2018/06/22 Python
WxPython建立批量录入框窗口
2019/02/27 Python
python django中8000端口被占用的解决
2019/12/17 Python
如何用Anaconda搭建虚拟环境并创建Django项目
2020/08/02 Python
Python Pillow(PIL)库的用法详解
2020/09/19 Python
利用Node实现HTML5离线存储的方法
2020/10/16 HTML / CSS
彪马西班牙官网:PUMA西班牙
2019/06/18 全球购物
意大利网上购书网站:Libraccio.it
2021/02/03 全球购物
程序运行正确, 但退出时却"core dump"了,怎么回事
2014/02/19 面试题
爱情检讨书大全
2014/01/21 职场文书
小学庆六一活动方案
2014/02/28 职场文书
商业计算机应用专业自荐书
2014/06/09 职场文书
大学生就业自荐书
2014/06/16 职场文书
2014年银行个人工作总结
2014/12/05 职场文书
2014年基建工作总结
2014/12/12 职场文书
硕士毕业论文导师评语
2014/12/31 职场文书
2016年寒假生活小结
2015/10/10 职场文书
oracle表分区的概念及操作
2021/04/24 Oracle