Vue中的v-for循环key属性注意事项小结


Posted in Javascript onAugust 12, 2018

当Vue用 v-for 正在更新已渲染过的元素列表是,它默认用“就地复用”策略。如果数据项的顺序被改变,Vue将不是移动DOM元素来匹配数据项的改变,而是简单复用此处每个元素,并且确保它在特定索引下显示已被渲染过的每个元素。

为了给Vue一个提示,以便它能跟踪每个节点的身份,从而重用和重新排序现有元素,你需要为每项提供一个唯一 key 属性。key属性的类型只能为 string或者number类型。

在下面这个例子中,如果不给 p 元素绑定key,我先选中第一个,

Vue中的v-for循环key属性注意事项小结

然后输入ID和Name,点击添加按钮之后,就会出现如下这种情况,刚添加的元素被选中。如果绑定了key属性,则不会出现这种情况。

Vue中的v-for循环key属性注意事项小结

完整的代码:

<html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 </head>
<body>
 <div id='app'>
  <!--v-for循环普通数组-->
  <div>
   <label>ID:<input type="text" v-model="id"></label>
   <label>Name:<input type="text" v-model="name"></label>
   <input type="button" value="添加" @click="add" />
  </div>
  <!--注意:v-for循环的时候,key属性只能使用number或string -->
  <!--注意:key使用的时候,必须使用v-bind绑定属性的形式,指定key的值 -->
  <!-- 在组件中,使用 v-for循环的时候,或者在一些特殊情况中,如果v-for有问题,
   必须在使用v-for的同时,指定唯一的 字符串/数字 类型:key 值-->
  <p v-for="item in list" :key="item.id">
   <input type="checkbox"/>
   {{item.id}}--{{item.name}}
  </p>
  
 </div>
</body>
<script src="vue.min.js"></script>
<script>
 var vm = new Vue({
  el:'#app',
  data:{
   id:"",
   name:"",
   list:[
    {id:1, name:'李斯'},
    {id:2, name:'嬴政'},
    {id:3, name:'赵高'},
    {id:4, name:'韩非'},
    {id:5, name:'荀子'},
   ],
  },
  methods:{
   add(){
    this.list.unshift({id:this.id,name:this.name});
   }
  }
 });
</script>
</html>

总结

以上所述是小编给大家介绍的Vue中的v-for循环key属性注意事项小结,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
javascript实现轮显新闻标题链接
Aug 13 Javascript
仿校内登陆框,精美,给那些很厉害但是没有设计天才的程序员
Nov 24 Javascript
利用jQuery的$.event.fix函数统一浏览器event事件处理
Dec 21 Javascript
基于prototype扩展的JavaScript常用函数库
Nov 30 Javascript
javascript编码的几个方法详细介绍
Jan 06 Javascript
javascript 中String.match()与RegExp.exec()的区别说明
Jan 10 Javascript
JavaScript通过事件代理高亮显示表格行的方法
May 27 Javascript
JavaScript代码判断点击第几个按钮
Dec 13 Javascript
jquery插件jquery.dragscale.js实现拖拽改变元素大小的方法(附demo源码下载)
Feb 25 Javascript
JS导出PDF插件的方法(支持中文、图片使用路径)
Jul 12 Javascript
基于JS实现前端压缩上传图片的实例代码
May 14 Javascript
详解vue实现坐标拾取器功能示例
Nov 18 Vue.js
vue实现商品加减计算总价的实例代码
Aug 12 #Javascript
Vue.js中使用iView日期选择器并设置开始时间结束时间校验功能
Aug 12 #Javascript
深入理解Vue父子组件生命周期执行顺序及钩子函数
Aug 12 #Javascript
VUE在for循环里面根据内容值动态的加入class值的方法
Aug 12 #Javascript
JS中的两种数据类型及实现引用类型的深拷贝的方法
Aug 12 #Javascript
原生JS封装_new函数实现new关键字的功能
Aug 12 #Javascript
axios向后台传递数组作为参数的方法
Aug 11 #Javascript
You might like
《星际争霸重制版》兵种对比图鉴
2020/03/02 星际争霸
php 批量生成html,txt文件的实现代码
2013/06/26 PHP
PHP图片等比例缩放生成缩略图函数分享
2014/06/10 PHP
Yii1.1中通过Sql查询进行的分页操作方法
2017/03/16 PHP
PHP的mysqli_set_charset()函数讲解
2019/01/23 PHP
浏览器窗口加载和大小改变事件示例
2014/02/27 Javascript
jQuery实现点击图片翻页展示效果的方法
2015/02/16 Javascript
jQuery实现仿路边灯箱广告图片轮播效果
2015/04/15 Javascript
js+canvas绘制五角星的方法
2016/01/28 Javascript
js简单获取表单中单选按钮值的方法
2016/08/23 Javascript
jQuery异步提交表单实例
2017/05/30 jQuery
JS判断一个数是否是水仙花数
2017/06/11 Javascript
Web技术实现移动监测的介绍
2017/09/18 Javascript
最简单的vue消息提示全局组件的方法
2019/06/16 Javascript
[36:43]NB vs Optic 2018国际邀请赛小组赛BO1 B组加赛 8.19
2018/08/21 DOTA
Python类属性与实例属性用法分析
2015/05/09 Python
Python3基于sax解析xml操作示例
2018/05/22 Python
python实现批量图片格式转换
2020/06/16 Python
Python使用pydub库对mp3与wav格式进行互转的方法
2019/01/10 Python
Python 批量读取文件中指定字符的实现
2020/03/06 Python
详解KMP算法以及python如何实现
2020/09/18 Python
Bravofly德国:预订廉价航班和酒店
2019/09/22 全球购物
怎样让char类型的东西转换成int类型
2013/12/09 面试题
国外的一些J2EE面试题一
2012/10/13 面试题
建筑施工实习自我鉴定
2013/09/19 职场文书
司机岗位职责
2013/11/15 职场文书
医药工作岗位求职信分享
2013/12/31 职场文书
高二物理教学反思
2014/02/08 职场文书
《小蝌蚪找妈妈》教学反思
2014/02/21 职场文书
珍惜资源保护环境的建议书
2014/05/14 职场文书
优秀少先队辅导员先进事迹材料
2014/05/18 职场文书
兴趣班停课通知
2015/04/24 职场文书
Python requests库参数提交的注意事项总结
2021/03/29 Python
分享mysql的current_timestamp小坑及解决
2021/11/27 MySQL
MySQL数据库安装方法与图形化管理工具介绍
2022/05/30 MySQL
Java实现超大Excel文件解析(XSSF,SXSSF,easyExcel)
2022/07/15 Java/Android