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 相关文章推荐
关于递归运算的顺序测试代码
Nov 30 Javascript
jQuery 复合选择器应用的几个例子
Sep 11 Javascript
Java File类的常用方法总结
Mar 18 Javascript
介绍JavaScript中Math.abs()方法的使用
Jun 14 Javascript
javascript设计模式--策略模式之输入验证
Nov 27 Javascript
jQuery+css实现炫目的动态块漂移效果
Jan 28 Javascript
window.onload绑定多个事件的两种解决方案
May 15 Javascript
jQuery的Cookie封装,与PHP交互的简单实现
Oct 05 Javascript
React-router v4 路由配置方法小结
Aug 08 Javascript
vue使用i18n实现国际化的方法详解
Sep 05 Javascript
javascript中的with语句学习笔记及用法
Feb 17 Javascript
在vue项目实现一个ctrl+f的搜索功能
Feb 28 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函数ip2long转换IP时数值太大产生负数的解决方法
2013/06/06 PHP
php学习笔记之基础知识
2014/11/08 PHP
PHP实现从远程下载文件的方法
2015/03/12 PHP
php 从指定数字中获取随机组合的简单方法(推荐)
2017/04/05 PHP
JXTree对象,读取外部xml文件数据,生成树的函数
2007/04/02 Javascript
jquery ajax修改全局变量示例代码
2013/11/08 Javascript
jquery选择器大全 全面详解jquery选择器
2014/03/06 Javascript
IE浏览器中图片onload事件无效的解决方法
2014/04/29 Javascript
JavaScript中Textarea滚动条不能拖动的解决方法
2015/12/15 Javascript
jQuery事件委托之Safari
2016/07/05 Javascript
完美的js div拖拽实例代码
2016/09/24 Javascript
Vue的Flux框架之Vuex状态管理器
2017/07/30 Javascript
Vue框架中正确引入JS库的方法介绍
2017/07/30 Javascript
JavaScript实现三级联动菜单效果
2017/08/16 Javascript
javascript中的隐式调用
2018/02/10 Javascript
vscode中vue-cli项目es-lint的配置方法
2018/07/30 Javascript
vue中使用codemirror的实例详解
2018/11/01 Javascript
js常用正则表达式集锦
2019/05/17 Javascript
新手快速入门JavaScript装饰者模式与AOP
2019/06/24 Javascript
javascript实现蒙版与禁止页面滚动
2020/01/11 Javascript
[00:15]TI9地铁玩家打卡
2019/08/11 DOTA
python修改list中所有元素类型的三种方法
2018/04/09 Python
python如何获取列表中每个元素的下标位置
2019/07/01 Python
tensorflow实现对张量数据的切片操作方式
2020/01/19 Python
Django的CVB实例详解
2020/02/10 Python
PyInstaller将Python文件打包为exe后如何反编译(破解源码)以及防止反编译
2020/04/15 Python
美国大型的健身社区和补充商店:Bodybuilding.com
2016/09/06 全球购物
师范应届生语文教师求职信
2013/10/29 职场文书
公司董事长职责
2013/12/12 职场文书
群众路线教育党课主持词
2014/04/01 职场文书
纪念9.18事变演讲稿
2014/09/14 职场文书
烈士陵园扫墓感想
2015/08/07 职场文书
如何写一份具有法律效力的借款协议书?
2019/07/02 职场文书
python实现简单的名片管理系统
2021/04/26 Python
详解JS ES6编码规范
2021/05/07 Javascript
Python如何快速找到多个字典中的公共键(key)
2022/04/29 Python