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 相关文章推荐
15款优秀的jQuery导航菜单插件分享
Jul 19 Javascript
基于JQuery 滑动与动画的说明介绍
Apr 18 Javascript
JavaScript使用循环和分割来替换和删除元素实例
Oct 13 Javascript
Jquery插件实现点击获取验证码后60秒内禁止重新获取
Mar 13 Javascript
jQuery仿天猫实现超炫的加入购物车
May 04 Javascript
JavaScript使用原型和原型链实现对象继承的方法详解
Apr 05 Javascript
JS实现弹出下载对话框及常见文件类型的下载
Jul 13 Javascript
Vue 组件传值几种常用方法【总结】
May 28 Javascript
vue 巧用过渡效果(小结)
Sep 22 Javascript
15 分钟掌握vue-next响应式原理
Oct 13 Javascript
JS sort排序详细使用方法示例解析
Sep 27 Javascript
element多个表单校验的实现
May 27 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
jquery 图片预加载 自动等比例缩放插件
2008/12/25 Javascript
javascript 异常处理使用总结
2009/06/21 Javascript
设置jsf的选择框h:selectOneMenu为不可编辑状态的方法
2014/01/07 Javascript
判断iframe里的页面是否加载完成
2014/06/06 Javascript
nodejs npm package.json中文文档
2014/09/04 NodeJs
浅谈jQuery中 wrap() wrapAll() 与 wrapInner()的差异
2014/11/12 Javascript
javascript中String对象的slice()方法分析
2014/12/20 Javascript
关于webpack代码拆分的解析
2017/07/20 Javascript
解析Vue 2.5的Diff算法
2017/11/28 Javascript
微信小程序支付及退款流程详解
2017/11/30 Javascript
vue.js与后台数据交互的实例讲解
2018/08/08 Javascript
详解在Node.js中发起HTTP请求的5种方法
2019/01/10 Javascript
vue多个元素的样式选择器问题
2019/11/29 Javascript
VSCode搭建Vue项目的方法
2020/04/30 Javascript
浅谈Vue使用Cascader级联选择器数据回显中的坑
2020/10/31 Javascript
[04:40]2016国际邀请赛中国区预选赛全程TOP10镜头集锦
2016/07/01 DOTA
python自动化测试实例解析
2014/09/28 Python
详细介绍Ruby中的正则表达式
2015/04/10 Python
在Django的session中使用User对象的方法
2015/07/23 Python
Python的numpy库中将矩阵转换为列表等函数的方法
2018/04/04 Python
详解python的四种内置数据结构
2019/03/19 Python
pyqt5 实现在别的窗口弹出进度条
2019/06/18 Python
Python+unittest+requests 接口自动化测试框架搭建教程
2020/10/09 Python
利用CSS3实现文本框的清除按钮相关的一些效果
2015/06/23 HTML / CSS
Halston Heritage官网:简洁的日装,稍显奢华的晚装
2018/11/20 全球购物
三陽商会官方网站:Sanyo iStore
2019/05/15 全球购物
白俄罗斯女装和针织品网上商店:Presli.by
2019/10/13 全球购物
会计出纳岗位职责
2015/03/31 职场文书
企业办公室主任岗位职责
2015/04/01 职场文书
销售开票员岗位职责
2015/04/15 职场文书
2015年党风廉政建设目标责任书
2015/05/08 职场文书
离职信范本
2015/06/23 职场文书
浅谈mysql返回Boolean类型的几种情况
2021/06/04 MySQL
node.js使用express-fileupload中间件实现文件上传
2021/07/16 Javascript
Pandas搭配lambda组合使用详解
2022/01/22 Python
为什么MySQL8新特性会修改自增主键属性
2022/04/18 MySQL