vue中key关键字的使用
解释当使用v-for更新已经渲染过的元素列表时,默认用“就地复用”策略,如果数据项的顺序被改变,Vue.js将不会移动Dom元素来匹配数据项的顺序,就如在数组的尾部和数组的头部插入一个新的元素,所产生的的key值就会不同。为了给Vue.js 追踪每个节点的身份,从而重用或重新排列现有的元素,需要提供一个唯一的Key属性特殊的属性使用v-bind来动态绑定值(全写“ v-bind:key”简...
·
解释
当使用v-for更新已经渲染过的元素列表时,默认用“就地复用”策略,如果数据项的顺序被改变,Vue.js将不会移动Dom元素来匹配数据项的顺序,就如在数组的尾部和数组的头部插入一个新的元素,所产生的的key值就会不同。
为了给Vue.js 追踪每个节点的身份,从而重用或重新排列现有的元素,需要提供一个唯一的Key属性特殊的属性使用v-bind来动态绑定值(全写“ v-bind:key” 简写“ :key”)
实例:
(1)未使用该关键字key,在数组对象中的头部插入一个新对象,添加之前,选中第四项 结果出错
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>key关键字的使用</title>
<script src="lib/vue.js"></script>
</head>
<body>
<div id="app">
<div>
<label>id</label><input type="text" v-model="id">
<label>name</label><input type="text" v-model="Name">
<input type="button" value="添加" @click="Add">
</div>
<p v-for="item in list">
<input type="checkbox">
{{item.id}}----{{item.Name}}
</p>
</div>
<script>
new Vue({
el: '#app',
data: {
id: '',
Name: '',
list: [
{ id: 1, Name: '张三' },
{ id: 2, Name: '李四' },
{ id: 3, Name: '王五' },
{ id: 4, Name: '赵六' }
]
},
methods: {
Add() {
// 在数组对象的尾部添加一个新的对象
// this.list.push({id:this.id, Name:this.Name})
//在数组对象的头部添加一个新的对象
this.list.unshift({id:this.id,Name:this.Name})
}
}
})
</script>
</body>
</html>
(2)添加key关键字之后 提前选中id:3 name:王五 结果正确,此处不建议使用v-bind的简写,容易出错。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>key关键字的使用</title>
<script src="lib/vue.js"></script>
</head>
<body>
<div id="app">
<div>
<label>id</label><input type="text" v-model="id">
<label>name</label><input type="text" v-model="Name">
<input type="button" value="添加" @click="Add">
</div>
<p v-for="item in list" v-bind:key="item.id">
<input type="checkbox">
{{item.id}}----{{item.Name}}
</p>
</div>
<script>
new Vue({
el: '#app',
data: {
id: '',
Name: '',
list: [
{ id: 1, Name: '张三' },
{ id: 2, Name: '李四' },
{ id: 3, Name: '王五' },
{ id: 4, Name: '赵六' }
]
},
methods: {
Add() {
// 在数组对象的尾部添加一个新的对象
// this.list.push({id:this.id, Name:this.Name})
//在数组对象的头部添加一个新的对象
this.list.unshift({id:this.id,Name:this.Name})
}
}
})
</script>
</body>
</html>
更多推荐
已为社区贡献1条内容
所有评论(0)