<!-- 内容 --> key 的必要性 Vue 默认按照“就地更新”的策略来更新通过 v-for 渲染的元素列表。当数据项的顺序改变时,Vue 不会随之移动 DOM 元素的顺序,而是就地更新每个元素,确保它们在原本指定的索引位置上渲染。 为了避免上述情况,可以为每个元素对应的块提供一个唯一的 key attribute。 这个特殊的 key...
聪明的你已经看出来了,删掉第二条后,点击调换数据会生成新的三条出来,而不是两条,原理我相信你也懂了,替换数据的那批id与上一批不一样,所以 Vue 比较后发现不同就帮我们生成新的Dom 以上便是使用index和唯一 id的明显区别 另外,像唯一id不止上面这一种绑定方式,我们也可以在 v-for 里面使用:key="Math.ra...
vue在更新dom时会比较key值相同的元素内容是否发生改变,如果不变则不更新页面,这样可以使得尽可能减少页面的更新,提高性能。假如我渲染3个元素,不设置key值,即默认策略应该是标识为index,即0,1,2。假如我在第一个元素后加一个元素,则实际上原先的bc元素都被改值了,变成了xb。 假如我们在添加元素前把b这个item添...
v-for 中 key 值是否可以为 index 答案当然是不可以,举个例子,我们来看下面两个 vdom,从 num 值我们可以发现,新、旧两个 vdom 是两个顺序相反的数组生成的 vdom,安装正常的方式,应该是简单调换一下顺序,直接复用3个元素即可,而当我们以 index 作为 key 时,情况就不同了,由于 index 永远都是从 0 开始,...
简介:Vue - v-for 中为什么不能用 index 作为 key 这是一篇脱坑日记,在做项目的过程中,我使用了 v-for 渲染子组件时,并将 index 绑定给了 key,这一行为导致删除操作会误删子组件,实际上删除的组件并不是你预期的那个。而且我在排查错误的过程中打印 log 的数据信息均正常,唯独在执行删除操作时出现异常。
v-for中的key与index(数据索引值)绑定 1.点击添加按钮,在原有的三个数据基础上在加一个人,然而我们把输入框里填好数据后,在点添加按钮,发现数据显示错位了。这是key与index绑定的后果。 <!-- 遍历数组 --> 人员列表(遍历数组) 添加一个老刘 {{p.name}}-...
index为key: 添加 {{ item.name }} item.id 为key: 添加 {{ item.name
篇幅有限,无法详尽的说明 diff 的具体机制,只针对自己的理解,做简单梳理,目的是为了说明开头抛出的「为什么不建议在 v-for 指令中使用 index 作为 key」。如果需要了解 diff 算法细则,大家可自行查阅。 示例:old vnode:[A B C D E F G H] new vnode:[A B D E C I G H] ...
Vue模板中使用v-for指令时不建议将index作为:key属性。今天我在看项目代码时,发现有多年开发经验的前端老鸟也犯这样的低级错误。 今天我们就从其原理上说明为什么不建议将index作为v-for的key,除非你能确定该v-for遍历的数组长度始终不会发生变化,不过在这个需求多变的时代谁能保证产品不会想一出是一出呢?
到目前为止,我们只真正研究了用 v-for 遍历数组。但是我们可以很容易地迭代对象的键值对。与访问元素的索引类似,我们必须向循环中添加另一个值。如果用单个参数循环对象的话将会循环所有项目。如果我们再添加一个参数,将会得到 item 和 key。如果添加第三个还可以访问 v-for 循环的 index。假设要遍历商品的每个...