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 相关文章推荐
jQuery的写法不同导致的兼容性问题的解决方法
Jul 29 Javascript
24款非常有用的 jQuery 插件分享
Apr 06 Javascript
详解JavaScript中的自定义事件编写
May 10 Javascript
简单的vue-resourse获取json并应用到模板示例
Feb 10 Javascript
详解微信第三方小程序代开发
Jun 23 Javascript
JavaScript动态绑定详解
Sep 14 Javascript
微信小程序如何获取用户收货地址
Nov 27 Javascript
使用vue-cli脚手架工具搭建vue-webpack项目
Jan 14 Javascript
使用webpack编译es6代码的方法步骤
Apr 28 Javascript
js实现上下左右键盘控制div移动
Jan 16 Javascript
javascript实现评分功能
Jun 24 Javascript
js实现盒子滚动动画效果
Aug 09 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
PHP入门速成(2)
2006/10/09 PHP
PHP Ajax实现页面无刷新发表评论
2007/01/02 PHP
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
2007/08/26 PHP
PHP parse_url 一个好用的函数
2009/10/03 PHP
使用php计算排列组合的方法
2013/11/13 PHP
PHP MYSQL实现登陆和模糊查询两大功能
2016/02/05 PHP
利用php做服务器和web前端的界面进行交互
2016/10/31 PHP
javascript 支持链式调用的异步调用框架Async.Operation
2009/08/04 Javascript
jquery等宽输出文字插件使用介绍
2013/09/18 Javascript
jquery实现的回旋滚动效果完整实例【附demo源码下载】
2016/09/20 Javascript
jquery获取easyui日期控件的值实现方法
2016/11/09 Javascript
Bootstrap组合上、下拉框简单实现代码
2017/03/06 Javascript
获取url中用&amp;隔开的参数实例(分享)
2017/05/28 Javascript
react路由配置方式详解
2017/08/07 Javascript
js实现轮播图的两种方式(构造函数、面向对象)
2017/09/30 Javascript
Vue数据双向绑定原理及简单实现方法
2018/05/18 Javascript
JavaScript 中的12种循环遍历方法【总结】
2018/05/31 Javascript
JavaScript实现小球沿正弦曲线运动
2020/09/07 Javascript
后台使用freeMarker和前端使用vue的方法及遇到的问题
2019/06/13 Javascript
webpack 最佳配置指北(推荐)
2020/01/07 Javascript
微信小程序实现日历小功能
2020/11/18 Javascript
pandas中Timestamp类用法详解
2017/12/11 Python
python如何读写json数据
2018/03/21 Python
PyQt5中向单元格添加控件的方法示例
2020/03/24 Python
解决pip安装tensorflow中出现的no module named tensorflow.python 问题方法
2021/02/20 Python
web字体加载方案优化小结
2019/11/29 HTML / CSS
官方授权图形T恤和服装:Fifth Sun
2019/06/12 全球购物
保险专业大专生求职信
2013/10/26 职场文书
2014两会优秀的心得体会范文
2014/03/17 职场文书
三年级评语大全
2014/04/23 职场文书
节能环保家庭事迹材料
2014/08/27 职场文书
幼儿园小班工作总结2015
2015/04/25 职场文书
道歉情书大全
2015/05/12 职场文书
经典爱情感言
2015/08/03 职场文书
2016年公务员六五普法心得体会
2016/01/21 职场文书
Beekeeper Studio开源数据库管理工具比Navicat更炫酷
2022/06/21 数据库