本系列博客汇总在这里:Vue.js 汇总


v-for 指令



源码工程文件为:


一、v-for 遍历数组

当我们有一组数据需要进行渲染时,我们就可以使用 ​​v-for​​ 来完成。

v-for 的语法类似于 JavaScript 中的 for 循环。

格式:​​item in items​



如果在遍历的过程中不需要使用索引值
Vue.js_23_v-for 指令_vue
依次从 array 中取出元素,并且在元素的内容中,我们可以使用 Mustache 语法,来使用元素。



如果在遍历的过程中,我们需要拿到元素在数组中的索引值呢?
语法格式:​​v-for=(item, index) in items​​,其中的 ​​index​​ 就代表了取出的 ​​item​​ 在原数组的索引值。
Vue.js_23_v-for 指令_数组_02



二、v-for 遍历对象

比如某个对象中存储着你的个人信息,我们希望以列表的形式显示出来。

Vue.js_23_v-for 指令_vue_03

三、组件的 key 属性

官方推荐我们在使用 ​​v-for​​ 时,给对应的元素或组件添加上一个 ​​:key​​ 属性。

Vue.js_23_v-for 指令_遍历数组_04

为什么需要这个 key 属性呢(了解)?

这个其实和 Vue 的虚拟 DOM 的 Diff 算法有关系,这里我们借用 React’s diff algorithm 中的一张图来简单说明一下:

Vue.js_23_v-for 指令_数组_05

当某一层有很多相同的节点时,也就是列表节点时,我们希望插入一个新的节点。

Vue.js_23_v-for 指令_vue_06

我们希望可以在 B 和 C 之间加一个 F,Diff 算法默认执行起来是这样的。

Vue.js_23_v-for 指令_vue_07

即把 C 更新成 F,D 更新成 C,E 更新成 D,最后再插入 E,是不是很没有效率?

所以我们需要使用 key 来给每个节点做一个唯一标识


  • Diff 算法就可以正确的识别此节点
  • 找到正确的位置区插入新的节点
    Vue.js_23_v-for 指令_vue_08
    所以一句话,key 的作用主要是为了高效的更新虚拟 DOM。

如有错误,欢迎指正!