视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Vue中的v-for循环key属性注意事项小结
2020-11-27 22:10:11 责编:小采
文档

当Vue用 v-for 正在更新已渲染过的元素列表是,它默认用“就地复用”策略。如果数据项的顺序被改变,Vue将不是移动DOM元素来匹配数据项的改变,而是简单复用此处每个元素,并且确保它在特定索引下显示已被渲染过的每个元素。

为了给Vue一个提示,以便它能跟踪每个节点的身份,从而重用和重新排序现有元素,你需要为每项提供一个唯一 key 属性。key属性的类型只能为 string或者number类型。

在下面这个例子中,如果不给 p 元素绑定key,我先选中第一个,

然后输入ID和Name,点击添加按钮之后,就会出现如下这种情况,刚添加的元素被选中。如果绑定了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属性注意事项小结,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

下载本文
显示全文
专题