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系列(7) S.O.L.I.D五大原则之开闭原则OCP
Jan 15 Javascript
js菜单点击显示或隐藏效果的简单实例
Jan 13 Javascript
javascript正则表达式之search()用法实例
Jan 19 Javascript
使用jQuery处理AJAX请求的基础学习教程
May 10 Javascript
JavaScript学习笔记整理_关于表达式和语句
Sep 19 Javascript
Node.js中多进程模块Cluster的介绍与使用
May 27 Javascript
js分页之前端代码实现和请求处理
Aug 04 Javascript
jQuery+CSS实现的table表格行列转置功能示例
Jan 08 jQuery
详解React-Router中Url参数改变页面不刷新的解决办法
May 08 Javascript
详解js删除数组中的指定元素
Oct 31 Javascript
详解Vue路由自动注入实践
Apr 17 Javascript
AudioContext 实现音频可视化(web技术分享)
Feb 24 Javascript
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
9个PHP开发常用功能函数小结
2011/07/15 PHP
PHP 过滤页面中的BOM(实现代码)
2013/06/29 PHP
php判断电脑访问、手机访问的例子
2014/05/10 PHP
php发送html格式文本邮件的方法
2015/06/10 PHP
php获取文件类型和文件信息的方法
2015/07/10 PHP
php根据命令行参数生成配置文件详解
2019/03/15 PHP
js兼容的placeholder属性详解
2013/08/18 Javascript
跨域传值即主页面与iframe之间互相传值
2013/12/09 Javascript
javascript的解析执行顺序在各个浏览器中的不同
2014/03/17 Javascript
javascript跨域的方法汇总
2015/10/23 Javascript
JavaScript文本框脚本编写的注意事项
2016/01/25 Javascript
jQuery实现div随意拖动的实例代码(通用代码)
2016/01/28 Javascript
JavaScript实现多种排序算法
2016/02/24 Javascript
Javascript中常见的逻辑题和解决方法
2016/09/17 Javascript
深入理解vue.js中$watch的oldvalue与newValue
2017/08/07 Javascript
实例学习JavaScript读取和写入cookie
2018/01/29 Javascript
基于IView中on-change属性的使用详解
2018/03/15 Javascript
基于Angular中ng-controller父子级嵌套的相关属性详解
2018/10/08 Javascript
移动端如何用下拉刷新的方式实现上拉加载
2018/12/10 Javascript
Vue执行方法,方法获取data值,设置data值,方法传值操作
2020/08/05 Javascript
讲解Python中的标识运算符
2015/05/14 Python
Python将阿拉伯数字转换为罗马数字的方法
2015/07/10 Python
使用PyV8在Python爬虫中执行js代码
2017/02/16 Python
Python 常用的安装Module方式汇总
2017/05/06 Python
使用Python监控文件内容变化代码实例
2018/06/04 Python
使用numpy和PIL进行简单的图像处理方法
2018/07/02 Python
Python爬虫使用浏览器cookies:browsercookie过程解析
2019/10/22 Python
tensorflow mnist 数据加载实现并画图效果
2020/02/05 Python
CSS3 实现弹幕的示例代码
2017/08/07 HTML / CSS
自我鉴定思想方面
2013/10/07 职场文书
跟单业务员岗位职责
2014/03/08 职场文书
2014年预备党员学习两会心得体会
2014/03/17 职场文书
升职演讲稿范文
2014/05/23 职场文书
金融与证券专业求职信
2014/06/22 职场文书
2015年个人现实表现材料
2014/12/10 职场文书
2014年小学体育工作总结
2014/12/11 职场文书