详解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中的checkbox实现全选功能
Nov 17 Vue.js
vue element实现表格合并行数据
Nov 30 Vue.js
vue添加自定义右键菜单的完整实例
Dec 08 Vue.js
vuex页面刷新导致数据丢失的解决方案
Dec 10 Vue.js
Vuex实现简单购物车
Jan 10 Vue.js
详解template标签用法(含vue中的用法总结)
Jan 12 Vue.js
vue组件是如何解析及渲染的?
Jan 13 Vue.js
vue实现简易计算器功能
Jan 20 Vue.js
vue使用transition组件动画效果的实例代码
Jan 28 Vue.js
vue数据字典取键值项目的字典问题
Apr 12 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
PHP 5昨天隆重推出--PHP 5/Zend Engine 2.0新特性
2006/10/09 PHP
PHP 输出URL的快捷方式示例代码
2013/09/22 PHP
PHP实现AES256加密算法实例
2014/09/22 PHP
symfony表单与页面实现技巧
2015/01/26 PHP
Centos 6.5下PHP 5.3安装ffmpeg扩展的步骤详解
2017/03/02 PHP
可以支持多中格式的JS键盘
2007/05/02 Javascript
11款新鲜的jQuery插件[附所有demo下载]
2011/01/24 Javascript
js怎么终止程序return不行换jfslk
2013/05/30 Javascript
Javascript玩转继承(二)
2014/05/08 Javascript
js,jquery滚动/跳转页面到指定位置的实现思路
2014/06/03 Javascript
jquery操作对象数组元素方法详解
2014/11/26 Javascript
JQuery标签页效果实例详解
2015/12/24 Javascript
jQuery根据表单name获取值的方法
2016/05/24 Javascript
简单实现js页面切换功能
2021/01/10 Javascript
webpack常用配置项配置文件介绍
2016/11/07 Javascript
如何获取TypeScript的声明文件.d.ts
2018/05/01 Javascript
CryptoJS中AES实现前后端通用加解密技术
2018/12/18 Javascript
JQuery省市联动效果实现过程详解
2020/05/08 jQuery
深入了解JavaScript词法作用域
2020/07/29 Javascript
[00:05]ChinaJoy现场 DOTA2玩家高呼“CN DOTA BEST DOTA”
2019/08/04 DOTA
用python代码做configure文件
2014/07/20 Python
python 列表,数组,矩阵两两转换tolist()的实例
2018/04/04 Python
Python小进度条显示代码
2019/03/05 Python
python 修改本地网络配置的方法
2019/08/14 Python
python中count函数简单的实例讲解
2020/02/06 Python
使用 django orm 写 exists 条件过滤实例
2020/05/20 Python
HTML5+CSS3绘制锯齿状的矩形
2016/03/01 HTML / CSS
Pretty Green美国:英式摇滚服饰风格代表品牌之一
2019/01/23 全球购物
项目资料员岗位职责
2013/12/10 职场文书
公司领导班子四风对照检查材料
2014/09/27 职场文书
机关作风建设自查报告及整改措施
2014/10/21 职场文书
大学生实习证明
2015/06/16 职场文书
2016春季运动会通讯稿
2015/07/18 职场文书
党员反腐倡廉学习心得体会
2015/08/15 职场文书
Axios取消重复请求的方法实例详解
2021/06/15 Javascript
php将xml转化对象的实例详解
2021/11/17 PHP