Vue3 循环语句

渲染"商品列表、用户列表、菜单项"这类重复结构时,逐条手写 HTML 是不现实的。Vue3 提供 v-for 指令,可以遍历数组、对象甚至整数范围,把一份数据批量渲染成多个元素。它是列表类页面的开发基础,几乎每天都会用到。

遍历数组

v-for 的基本写法是 item in list,写在哪一个元素上,那个元素就会随数组的每一项重复渲染一次。

<template>
  <ul>
    <li v-for="item in fruits">{{ item }}</li>
  </ul>
</template>

<script setup>
const fruits = ['苹果', '香蕉', '橙子']
</script>

效果:页面渲染出 3 个 <li>,依次显示苹果、香蕉、橙子。数组新增或删除元素时,列表会自动同步。

带索引遍历

如果想知道当前是第几项,可以再加一个参数拿到索引,索引从 0 开始。

<template>
  <li v-for="(item, index) in fruits" :key="index">
    {{ index }} - {{ item }}
  </li>
</template>

<script setup>
const fruits = ['苹果', '香蕉', '橙子']
// 效果:0 - 苹果、1 - 香蕉、2 - 橙子
</script>

遍历对象时语法类似,三个参数依次是值、键名和索引,例如 v-for="(value, key, index) in user"。

遍历整数范围

v-for 还可以遍历一个正整数,得到从 1 到 n 的序列,常用于生成页码、星级评分等固定数量的元素。

<template>
  <span v-for="star in 5" :key="star">★</span>
</template>

效果:页面上连续渲染出 5 颗星。注意这里的 5 是字面量数字,不需要引号包裹。

为什么需要 key

在列表元素上尽量绑定唯一的 key,让 Vue 能够精确识别每个元素被新增、删除还是移动,从而高效复用 DOM 而不是整段重建。

<template>
  <li v-for="item in list" :key="item.id">{{ item.name }}</li>
</template>

<script setup>
const list = [
  { id: 1, name: 'Vue3 入门' },
  { id: 2, name: '组件进阶' },
]
</script>

key 应使用 id 这类稳定且唯一的字段。在列表中间插入或删除数据时,用 index 当 key 容易造成渲染错位,应当避免。

小结

v-for 用一个指令解决列表批量渲染:遍历数组用 item in list,需要序号加 index 参数,对象与整数范围同样支持;配合稳定的 key 能显著提升更新性能。结合上一节的条件语句,你已经可以用数据拼出各种动态界面,下一节进入组件开发。

笔记加载中…