详解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 $router和$route的区别详解
Dec 02 Vue.js
vue中利用three.js实现全景图的完整示例
Dec 07 Vue.js
详解vue中使用transition和animation的实例代码
Dec 12 Vue.js
vue从后台渲染文章列表以及根据id跳转文章详情详解
Dec 14 Vue.js
vue组件是如何解析及渲染的?
Jan 13 Vue.js
vue实现按钮切换图片
Jan 20 Vue.js
详解实现vue的数据响应式原理
Jan 20 Vue.js
vue实现倒计时功能
Mar 24 Vue.js
如何让vue长列表快速加载
Mar 29 Vue.js
Vue.js 带下拉选项的输入框(Textbox with Dropdown)组件
Apr 17 Vue.js
Vue项目中如何封装axios(统一管理http请求)
May 02 Vue.js
Vue操作Storage本地化存储
Apr 29 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 实现301重定向跳转实例代码
2016/07/18 PHP
浅谈laravel-admin的sortable和orderby使用问题
2019/10/03 PHP
Prototype 学习 工具函数学习($w,$F方法)
2009/07/12 Javascript
理解Javascript闭包
2013/11/01 Javascript
jquery用offset()方法获得元素的xy坐标
2014/09/06 Javascript
node.js中的emitter.on方法使用说明
2014/12/10 Javascript
基于ajax实现文件上传并显示进度条
2015/08/03 Javascript
javascript中call,apply,bind函数用法示例
2016/12/19 Javascript
详解JS对象封装的常用方式
2016/12/30 Javascript
bootstrap网格系统使用方法解析
2017/01/13 Javascript
iOS + node.js使用Socket.IO框架进行实时通信示例
2017/04/14 Javascript
关于webpack代码拆分的解析
2017/07/20 Javascript
AngularJs导出数据到Excel的示例代码
2017/08/11 Javascript
微信小程序url与token设置详解
2017/09/26 Javascript
解决angularjs前后端分离调用接口传递中文时中文乱码的问题
2018/08/13 Javascript
微信小程序实现留言板
2018/10/31 Javascript
编写更好的JavaScript条件式和匹配条件的技巧(小结)
2019/06/27 Javascript
Vuex实现数据共享的方法
2019/12/20 Javascript
js实现自定义右键菜单
2020/05/18 Javascript
Vue仿百度搜索功能
2020/12/28 Vue.js
[06:44]2018DOTA2亚洲邀请赛4.5 SOLO赛 MidOne vs Sumail
2018/04/06 DOTA
Python Django使用forms来实现评论功能
2016/08/17 Python
python操作redis方法总结
2018/06/06 Python
Python之list对应元素求和的方法
2018/06/28 Python
详解pytorch tensor和ndarray转换相关总结
2020/09/03 Python
JupyterNotebook 输出窗口的显示效果调整实现
2020/09/22 Python
CSS3点击按钮实现背景渐变动画效果
2016/10/19 HTML / CSS
教师找工作推荐信
2013/11/23 职场文书
应届护士求职信范文
2014/01/26 职场文书
《我的伯父鲁迅先生》教学反思
2014/02/12 职场文书
空中乘务员岗位职责
2014/03/08 职场文书
房产委托公证书
2014/04/08 职场文书
学习型党组织建设经验材料
2014/05/26 职场文书
房屋维修申请报告
2015/05/18 职场文书
《一面五星红旗》教学反思
2016/02/23 职场文书
《火纹风花雪月无双》预告“神秘雇佣兵” 紫发剑客
2022/04/13 其他游戏