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 相关文章推荐
JS 树形递归实例代码
May 18 Javascript
js跳转页面方法实现汇总
Feb 11 Javascript
JS判断网页广告是否被浏览器拦截过滤的代码
Apr 05 Javascript
BootStrap入门教程(二)之固定的内置样式
Sep 19 Javascript
js中小数向上取整数,向下取整数,四舍五入取整数的实现(必看篇)
Feb 13 Javascript
JavaScript通过mouseover()实现图片变大效果的示例
Dec 20 Javascript
vue中使用codemirror的实例详解
Nov 01 Javascript
详解JavaScript 浮点数运算的精度问题
Jul 23 Javascript
js里面的变量范围分享
Jul 18 Javascript
通过实例了解Render Props回调地狱解决方案
Nov 04 Javascript
vue+iview实现分页及查询功能
Nov 17 Vue.js
Typescript类型系统FLOW静态检查基本规范
May 25 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
Mysql中limit的用法方法详解与注意事项
2008/04/19 PHP
php 读取文件乱码问题
2010/02/20 PHP
Linux下CoreSeek及PHP扩展模块的安装
2012/09/23 PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
2020/11/10 PHP
javascript 去字符串空格终极版(支持utf8)
2009/11/14 Javascript
flexigrid 参数说明
2010/11/23 Javascript
菜鸟javascript基础资料整理3 正则
2010/12/06 Javascript
Javascript this 的一些学习总结
2012/08/31 Javascript
img onload事件绑定各浏览器均可执行
2012/12/19 Javascript
jquery $.each 和for怎么跳出循环终止本次循环
2013/09/27 Javascript
javascript常用的正则表达式实例
2014/05/15 Javascript
面向切面编程(AOP)的理解
2015/05/01 Javascript
浅析JavaScript 调试方法和技巧
2015/10/22 Javascript
JS基于正则截取替换特定字符之间字符串操作示例
2017/02/03 Javascript
javascript实现二叉树的代码
2017/06/08 Javascript
在Vue中如何使用Cookie操作实例
2017/07/27 Javascript
分分钟学会vue中vuex的应用(入门教程)
2017/09/14 Javascript
解析Vue2 dist 目录下各个文件的区别
2017/11/22 Javascript
浅谈Angularjs中不同类型的双向数据绑定
2018/07/16 Javascript
python list中append()与extend()用法分享
2013/03/24 Python
Python实现FTP上传文件或文件夹实例(递归)
2017/01/16 Python
Python 字符串与数字输出方法
2018/07/16 Python
ubuntu 16.04下python版本切换的方法
2019/06/14 Python
python实现的多任务版udp聊天器功能案例
2019/11/13 Python
wxPython色环电阻计算器
2019/11/18 Python
如何给Python代码进行加密
2020/01/10 Python
python统计字符串中字母出现次数代码实例
2020/03/02 Python
Pytorch 卷积中的 Input Shape用法
2020/06/29 Python
多个版本的python共存时使用pip的正确做法
2020/10/26 Python
python中round函数保留两位小数的方法
2020/12/04 Python
html5使用canvas画三角形
2014/12/15 HTML / CSS
软件测试专业推荐信
2014/09/18 职场文书
群众路线问题查摆对照检查材料
2014/10/04 职场文书
2014年综合治理工作总结
2014/11/20 职场文书
MySQL 计算连续登录天数
2022/05/11 MySQL
Golang Web 框架Iris安装部署
2022/08/14 Python