详解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 插槽简介及使用示例
Nov 19 Vue.js
vuex的数据渲染与修改浅析
Nov 26 Vue.js
vuex Module将 store 分割成模块的操作
Dec 07 Vue.js
vue 在服务器端直接修改请求的接口地址
Dec 19 Vue.js
vue form表单post请求结合Servlet实现文件上传功能
Jan 22 Vue.js
vue集成一个支持图片缩放拖拽的富文本编辑器
Jan 29 Vue.js
vue-router懒加载的3种方式汇总
Feb 28 Vue.js
vue实现同时设置多个倒计时
May 20 Vue.js
HTML+VUE分页实现炫酷物联网大屏功能
May 27 Vue.js
vue项目多环境配置(.env)的实现
Jul 21 Vue.js
一篇文章告诉你如何实现Vue前端分页和后端分页
Feb 18 Vue.js
vue3引入highlight.js进行代码高亮的方法实例
Apr 08 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大批量数据操作时临时调整内存与执行时间的方法
2011/04/20 PHP
php中return的用法实例分析
2015/02/28 PHP
php实现递归的三种基本方式
2020/07/04 PHP
提交表单后 PHP获取提交内容的实现方法
2016/05/25 PHP
总结对比php中的多种序列化
2016/08/28 PHP
PDO操作MySQL的基础教程(推荐)
2017/08/18 PHP
JavaScript中yield实用简洁实现方式
2010/06/12 Javascript
jQuery登陆判断简单实现代码
2013/04/21 Javascript
JS 获取浏览器和屏幕宽高等信息的实现思路及代码
2013/07/31 Javascript
解决JS中乘法的浮点错误的方法
2014/01/03 Javascript
js实现网页收藏功能
2015/12/17 Javascript
js实现n秒倒计时后才可以点击的效果
2015/12/20 Javascript
jquery注册文本框获取焦点清空,失去焦点赋值的简单实例
2016/09/08 Javascript
JavaScript实现DOM对象选择器
2016/09/24 Javascript
javascript 开发之百度地图使用到的js函数整理
2017/05/19 Javascript
详解webpack loader和plugin编写
2018/10/12 Javascript
layui清除radio的选中状态实例
2019/11/14 Javascript
vue 组件简介
2020/07/31 Javascript
用Nodejs实现在终端中炒股的实现
2020/10/18 NodeJs
PHP 502bad gateway原因及解决方案
2020/11/13 Javascript
python中去空格函数的用法
2014/08/21 Python
Python对小数进行除法运算的正确方法示例
2014/08/25 Python
详解pyppeteer(python版puppeteer)基本使用
2019/06/12 Python
简单了解Python3里的一些新特性
2019/07/13 Python
python中必要的名词解释
2019/11/20 Python
HTML5 移动页面自适应手机屏幕四类方法总结
2017/08/17 HTML / CSS
安全在我心中演讲稿
2014/09/01 职场文书
先进个人申报材料
2014/12/30 职场文书
2015年班组工作总结
2015/04/20 职场文书
2015年初中教务处工作总结
2015/07/21 职场文书
小学生红领巾广播稿
2015/08/19 职场文书
python 定义函数 返回值只取其中一个的实现
2021/05/21 Python
python实现剪贴板的操作
2021/07/01 Python
Selenium浏览器自动化如何上传文件
2022/04/06 Python
CentOS安装Nginx并部署vue
2022/04/12 Servers
安装Windows Server 2012 R2企业版操作系统并设置好相关参数
2022/04/29 Servers