当前位置:首页 > 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 传递给子组件。

vue怎样实现列表循环

<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 可以检测到以下数组方法触发的变更:

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实现删除

Vue 实现删除功能的方法 在 Vue 中实现删除功能通常涉及以下几个步骤: 数据绑定与列表渲染 使用 v-for 指令渲染列表数据,并为每个项绑定唯一标识符(如 id)。例如: <…

vue实现cs

vue实现cs

Vue 实现 CS(Client-Side)渲染的常见方法 Vue.js 是一个用于构建用户界面的渐进式框架,默认采用客户端渲染(CSR)。以下是几种常见的实现方式: 使用 Vue CLI 创建项目…

vue实现海报

vue实现海报

Vue 实现海报生成方案 使用 html2canvas 库 html2canvas 是一个将 HTML 元素转换为 Canvas 的库,适合将 Vue 组件渲染为海报图片 安装依赖: npm in…

vue实现标题

vue实现标题

Vue 实现标题的方法 在Vue中实现标题可以通过多种方式,以下是几种常见的方法: 方法一:使用模板语法 在Vue组件的模板中直接使用HTML的<h1>到<h6>标签来定义…

vue实现浮标

vue实现浮标

Vue 实现浮动按钮(浮标) 使用 Vue 实现浮动按钮可以通过多种方式完成,以下是几种常见的方法: 使用 CSS 定位和 Vue 组件 创建 Vue 组件并配合 CSS 固定定位实现浮动按钮:…

vue轮播实现

vue轮播实现

Vue 轮播实现方法 使用第三方库(推荐) 安装 swiper 或 vue-awesome-swiper 库,快速实现功能丰富的轮播效果。 以 vue-awesome-swiper 为例: npm…