在 Vue 中,使用 v-for
指令循环遍历数组或对象时,每个子元素都需要绑定一个唯一的 key
值,用于标识这个子元素。我们可以使用 :key
属性来绑定这个 key 值。例如:
<div v-for="item in itemList" :key="item.id">{{ item.name }}</div>
在这个例子中,我们使用 v-for
循环遍历了一个名为 itemList
的数组,然后为每个子元素绑定了一个唯一的 key
值,即 item.id
。这样,在更新视图时,Vue 就能够根据这个 key
值来判断哪些元素是新增加的,哪些元素是被删除的,哪些元素需要更新,从而提高了渲染效率。
值得注意的是,key
值必须是唯一的、稳定的,并且不推荐使用随机数或者索引作为 key
值。如果使用随机数或者索引作为 key
值,会导致更新时出现问题,因为它们可能在不同的渲染周期中生成相同的值。正确的做法应该是使用一个稳定的唯一标识符,比如数据库中的 ID 值或者其他全局唯一的标识符。
总之,:key
属性是 Vue 中一个非常重要的属性,用于标识每个子元素的唯一性,确保渲染效率和正确性
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><div id="app"><div><input type="text" v-model="name"><button @click="addNewUser">添加</button></div><ul><li v-for="user in userlist" :key="user.id"><input type="checkbox">姓名:{{user.name}}</li></ul></div><script src="./lib/vue-2.6.14.js"></script><script>const vm = new Vue({el: "#app",data: {userlist: [{ id: 1, name: "paprika" },{ id: 2, name: "white" },],presentId: 2,name: "",},methods: {addNewUser() {this.presentId++this.userlist.push({ id: this.presentId, name: this.name })}}})</script>
</body></html>