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 Split方法,indexOf方法、lastIndexOf 方法和substring 方法
Mar 21 Javascript
Mootools 1.2教程 设置和获取样式表属性
Sep 15 Javascript
location.href 在IE6中不跳转的解决方法与推荐使用代码
Jul 08 Javascript
IE6下通过a标签点击切换图片的问题
Nov 14 Javascript
javascript设置金额样式转换保留两位小数示例代码
Dec 04 Javascript
javascript冒泡排序小结
Apr 10 Javascript
ThinkPHP+jquery实现“加载更多”功能代码
Mar 11 Javascript
ES6中Iterator与for..of..遍历用法分析
Mar 31 Javascript
JS判断非空至少输入两个字符的简单实现方法
Jun 23 Javascript
vue实现图书管理demo详解
Oct 17 Javascript
js实现各浏览器全屏代码实例
Jul 03 Javascript
vue循环数组改变点击文字的颜色
Oct 14 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
十大感人催泪爱情动漫 第一名至今不忍在看第二遍
2020/03/04 日漫
php环境配置 php5 mysql5 apache2 phpmyadmin安装与配置
2006/11/17 PHP
对Session和Cookie的区分与解释
2007/03/16 PHP
MySQL数据库转移,access,sql server 转 MySQL 的图文教程
2007/09/02 PHP
PHP mysql事务问题实例分析
2016/01/18 PHP
PHP调用接口API封装的例子
2019/10/11 PHP
js屏蔽鼠标键盘(右键/Ctrl+N/Shift+F10/F11/F5刷新/退格键)
2013/01/24 Javascript
解析javascript 数组以及json元素的添加删除
2013/06/26 Javascript
js设置组合快捷键/tabindex功能的方法
2013/11/21 Javascript
基于jQuery实现复选框的全选 全不选 反选功能
2014/11/24 Javascript
node.js [superAgent] 请求使用示例
2015/03/13 Javascript
jquery实现带缩略图的可定制高度画廊效果(5种)
2015/08/28 Javascript
BootStrap初学者对弹出框和进度条的使用感觉
2016/06/27 Javascript
基于Vue框架vux组件库实现上拉刷新功能
2017/11/28 Javascript
nginx部署访问vue-cli搭建的项目的方法
2018/02/12 Javascript
微信小程序局部刷新触发整页刷新效果的实现代码
2018/11/21 Javascript
Vue 监听元素前后变化值实例
2020/07/29 Javascript
python实现按长宽比缩放图片
2018/06/07 Python
Django中使用Celery的方法示例
2018/11/29 Python
对python中list的拷贝与numpy的array的拷贝详解
2019/01/29 Python
简单了解Django应用app及分布式路由
2019/07/24 Python
Python @property使用方法解析
2019/09/17 Python
使用CSS3来制作消息提醒框
2015/07/12 HTML / CSS
HTML5实现表单自动验证功能实例代码
2017/01/11 HTML / CSS
HTML5离线缓存在tomcat下部署可实现图片flash等离线浏览
2012/12/13 HTML / CSS
HTML5样式控制示例代码
2013/11/27 HTML / CSS
HTML5自定义属性前缀data-及dataset的使用方法(html5 新特性)
2017/08/24 HTML / CSS
uniapp+Html5端实现PC端适配
2020/07/15 HTML / CSS
如果让你测试一台高速激光打印机,你都会进行哪些测试
2012/12/04 面试题
QQ空间主人寄语大全
2014/04/12 职场文书
门卫岗位职责
2015/02/09 职场文书
2015年乡镇纪检工作总结
2015/04/22 职场文书
2016年党员读书月活动总结
2016/04/06 职场文书
php随机生成验证码,php随机生成数字,php随机生成数字加字母!
2021/04/01 PHP
python之PySide2安装使用及QT Designer UI设计案例教程
2021/07/26 Python
JavaScript事件的委托(代理)的用法示例详解
2022/02/18 Javascript