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 1.0.4 - New Wave Javascript(js源文件)
Jan 15 Javascript
jQuery随机切换图片的小例子
Apr 18 Javascript
jquery cookie实现的简单换肤功能适合小网站
Aug 25 Javascript
判断客户浏览器是否支持cookie的示例代码
Dec 23 Javascript
不到30行JS代码实现Excel表格的方法
Nov 15 Javascript
浅谈jquery的map()和each()方法
Jun 12 Javascript
JavaScript动态数量的文件上传控件
Nov 18 Javascript
js实现右键菜单功能
Nov 28 Javascript
安装Node.js并启动本地服务的操作教程
May 12 Javascript
详解关于vue-area-linkage走过的坑
Jun 27 Javascript
layui select获取自定义属性方法
Aug 15 Javascript
JavaScript实现拖拽效果
Mar 16 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
ftp类(myftp.php)
2006/10/09 PHP
PHP数组传递是值传递而非引用传递概念纠正
2013/01/31 PHP
深入eAccelerator与memcached的区别详解
2013/06/06 PHP
Yii使用Captcha验证码的方法
2015/12/28 PHP
PHP8.0新功能之Match表达式的使用
2020/07/19 PHP
PHP中isset、empty的用法与区别示例详解
2020/11/05 PHP
JavaScript 使用技巧精萃(.net html
2009/04/25 Javascript
JS小功能(列表页面隔行变色)简单实现
2013/11/28 Javascript
jQuery实现的一个tab切换效果内部还嵌有切换
2014/08/10 Javascript
jQuery动态星级评分效果实现方法
2015/08/06 Javascript
JS模拟并美化的表单控件完整实例
2015/08/19 Javascript
jquery 将当前时间转换成yyyymmdd格式的实现方法
2016/06/01 Javascript
BootStrap3中模态对话框的使用
2017/01/06 Javascript
Bootstrap jquery.twbsPagination.js动态页码分页实例代码
2017/02/20 Javascript
JavaScript编写棋盘覆盖代码详解
2017/08/28 Javascript
浅谈webpack 构建性能优化策略小结
2018/06/13 Javascript
在Vue methods中调用filters里的过滤器实例
2018/08/30 Javascript
Vue中点击active并第一个默认选中功能的实现
2020/02/24 Javascript
Vue Router中应用中间件的方法
2020/08/06 Javascript
全面解析js中的原型,原型对象,原型链
2021/01/25 Javascript
python中文乱码的解决方法
2013/11/04 Python
python如何让类支持比较运算
2018/03/20 Python
pandas数据清洗,排序,索引设置,数据选取方法
2018/05/18 Python
解决Python中list里的中文输出到html模板里的问题
2018/12/17 Python
python GUI框架pyqt5 对图片进行流式布局的方法(瀑布流flowlayout)
2020/03/12 Python
用Python开发app后端有优势吗
2020/06/29 Python
python math模块的基本使用教程
2021/01/16 Python
Python 内存管理机制全面分析
2021/01/16 Python
Goodee官方商店:迷你投影仪
2021/03/15 全球购物
就业导师推荐信范文
2015/03/27 职场文书
社区义诊通知
2015/04/24 职场文书
2015国庆节66周年标语
2015/07/30 职场文书
尊师重教主题班会
2015/08/14 职场文书
导游词之江西赣州
2019/10/15 职场文书
基于python的matplotlib制作双Y轴图
2021/04/20 Python
python装饰器代码解析
2022/03/23 Python