当前位置:首页 > VUE

vue怎样实现列表循环

2026-01-22 11:51:47VUE

在 Vue 中实现列表循环

Vue 提供了 v-for 指令来实现列表循环,可以遍历数组或对象,并为每个元素生成对应的 DOM 节点。

遍历数组

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

<script>
export default {
  data() {
    return {
      items: ['苹果', '香蕉', '橙子']
    }
  }
}
</script>

遍历对象

<template>
  <ul>
    <li v-for="(value, key, index) in user" :key="key">
      {{ index }}. {{ key }}: {{ value }}
    </li>
  </ul>
</template>

<script>
export default {
  data() {
    return {
      user: {
        name: '张三',
        age: 25,
        gender: '男'
      }
    }
  }
}
</script>

使用 key 的重要性

为每个循环项添加唯一的 key 属性可以帮助 Vue 高效地更新 DOM。理想情况下,key 应该是数据中的唯一标识符,而不是数组索引。

<template>
  <ul>
    <li v-for="user in users" :key="user.id">
      {{ user.name }}
    </li>
  </ul>
</template>

在组件中使用 v-for

当在组件上使用 v-for 时,必须使用 key 属性,并且数据需要通过 props 传递给子组件。

<template>
  <div>
    <user-item
      v-for="user in users"
      :key="user.id"
      :user="user"
    />
  </div>
</template>

<script>
import UserItem from './UserItem.vue'

export default {
  components: {
    UserItem
  },
  data() {
    return {
      users: [
        { id: 1, name: '张三' },
        { id: 2, name: '李四' }
      ]
    }
  }
}
</script>

性能优化技巧

对于大型列表,可以考虑使用虚拟滚动技术,如 vue-virtual-scroller 插件,只渲染可视区域内的元素。

<template>
  <RecycleScroller
    class="scroller"
    :items="largeList"
    :item-size="50"
    key-field="id"
    v-slot="{ item }"
  >
    <div class="user">
      {{ item.name }}
    </div>
  </RecycleScroller>
</template>

<script>
import { RecycleScroller } from 'vue-virtual-scroller'
import 'vue-virtual-scroller/dist/vue-virtual-scroller.css'

export default {
  components: {
    RecycleScroller
  },
  data() {
    return {
      largeList: [...]
    }
  }
}
</script>

数组变更检测

Vue 可以检测到以下数组方法触发的变更:

  • push()
  • pop()
  • shift()
  • unshift()
  • splice()
  • sort()
  • reverse()

对于非变更方法(如 filter()concat()slice()),可以用新数组替换旧数组:

this.items = this.items.filter(item => item.isActive)

注意事项

避免在同一元素上同时使用 v-ifv-for。如果需要条件渲染,可以在外层使用 template 标签:

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

vue怎样实现列表循环

标签: 列表vue
分享给朋友:

相关文章

vue实现a

vue实现a

Vue 实现 A 功能的方法 在 Vue 中实现 A 功能可以通过多种方式,具体取决于 A 功能的具体需求。以下是几种常见的实现方法: 使用 Vue 组件 通过创建自定义组件来实现 A 功能。组件…

vue alert实现

vue alert实现

使用 Vue 实现 Alert 组件 在 Vue 中实现 Alert 组件可以通过自定义组件或结合第三方库完成。以下是几种常见方法: 自定义 Alert 组件 创建一个可复用的 Alert 组件,…

vue实现图片

vue实现图片

Vue 实现图片功能的方法 静态图片引入 在 Vue 项目中,可以通过 src 属性直接引入静态图片。图片通常放在 public 或 assets 目录下。 <template> &…

vue实现订单

vue实现订单

Vue 实现订单功能 订单数据结构设计 订单数据通常包含以下字段: order: { id: String, // 订单ID userId: String,…

vue实现波形

vue实现波形

实现波形效果的方法 在Vue中实现波形效果可以通过多种方式完成,常见的方法包括使用Canvas绘制、CSS动画或第三方库。以下是几种实现方案: 使用Canvas绘制波形 通过Canvas API动…

vue实现树

vue实现树

Vue 实现树形结构的方法 使用递归组件实现树形结构 递归组件是Vue中实现树形结构的常见方式。通过组件调用自身,可以轻松构建多层嵌套的树形数据。 <template> <u…