详解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中echarts的用法及与elementui-select的协同绑定操作
Nov 17 Vue.js
Vue实现购物小球抛物线的方法实例
Nov 22 Vue.js
vue 使用class创建和清除水印的示例代码
Dec 25 Vue.js
vue3自定义dialog、modal组件的方法
Jan 04 Vue.js
Vue中ref和$refs的介绍以及使用方法示例
Jan 11 Vue.js
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
Mar 01 Vue.js
Vue如何实现组件间通信
May 15 Vue.js
vue中this.$http.post()跨域和请求参数丢失的解决
Apr 08 Vue.js
分享一个vue实现的记事本功能案例
Apr 11 Vue.js
vue项目如何打包之项目打包优化(让打包的js文件变小)
Apr 30 Vue.js
vue实现登陆页面开发实践
May 30 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
Views rows style模板重写代码
2011/05/16 PHP
php中将时间差转换为字符串提示的实现代码
2011/08/08 PHP
php错误级别的设置方法
2013/06/17 PHP
php实现加减法验证码代码
2014/02/14 PHP
php实现模拟post请求用法实例
2015/07/11 PHP
php微信开发之音乐回复功能
2018/06/14 PHP
JavaScript加密解密7种方法总结分析
2007/10/07 Javascript
JS文字球状放大效果代码分享
2015/08/19 Javascript
详解有关easyUI的拖动操作中droppable,draggable用法例子
2017/06/03 Javascript
在Vue项目中使用d3.js的实例代码
2018/05/01 Javascript
解决layui上传文件提示上传异常,实际文件已经上传成功的问题
2018/08/19 Javascript
vue实现树形结构样式和功能的实例代码
2019/10/15 Javascript
解决node.js含有%百分号时发送get请求时浏览器地址自动编码的问题
2019/11/20 Javascript
[01:08]2014DOTA2展望TI 剑指西雅图LGD战队专访
2014/06/30 DOTA
Python实现从url中提取域名的几种方法
2014/09/26 Python
Python实现网站文件的全备份和差异备份
2014/11/30 Python
浅谈Django自定义模板标签template_tags的用处
2017/12/20 Python
在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南
2018/01/30 Python
tensorflow 使用flags定义命令行参数的方法
2018/04/23 Python
python Django框架实现web端分页呈现数据
2019/10/31 Python
python 利用turtle模块画出没有角的方格
2019/11/23 Python
代码总结Python2 和 Python3 字符串的区别
2020/01/28 Python
新版Pycharm中Matplotlib不会弹出独立的显示窗口的问题
2020/06/02 Python
python opencv实现直线检测并测出倾斜角度(附源码+注释)
2020/12/31 Python
Linux系统下升级pip的完整步骤
2021/01/31 Python
matplotlib阶梯图的实现(step())
2021/03/02 Python
洛佩桑酒店官方网站:Lopesan Hotels
2019/04/15 全球购物
大学新生军训自我鉴定
2014/03/18 职场文书
大班幼儿评语大全
2014/04/30 职场文书
学习张丽丽心得体会
2014/09/03 职场文书
小学数学教学反思范文
2016/02/16 职场文书
初中数学课堂教学反思
2016/02/17 职场文书
子女赡养老人协议书
2016/03/23 职场文书
公证书
2019/04/17 职场文书
拒绝盗图!教你怎么用python给图片加水印
2021/06/04 Python
Vue的生命周期一起来看看
2022/02/24 Vue.js