当前位置:首页 > 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 标签:

vue怎样实现列表循环

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

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

相关文章

vue实现过程

vue实现过程

Vue 的实现过程 Vue 的实现过程可以分为多个核心模块,包括响应式系统、虚拟 DOM、模板编译等。以下是 Vue 的主要实现过程分析。 响应式系统 Vue 的响应式系统基于 Object.def…

vue实现引导

vue实现引导

Vue 实现引导功能的方法 使用第三方库 推荐使用 driver.js 或 intro.js 这类专门为 Vue 设计的引导库。这些库提供了完整的 API 和样式,能够快速实现引导功能。 安装 dr…

实现vue cli

实现vue cli

安装 Vue CLI 确保系统中已安装 Node.js(版本建议 12.x 或更高)。通过 npm 全局安装 Vue CLI: npm install -g @vue/cli 安装完成后验证版本:…

vue实现换页

vue实现换页

Vue实现页面切换的方法 在Vue中实现页面切换通常可以通过Vue Router来完成。Vue Router是Vue.js官方的路由管理器,用于构建单页面应用(SPA)。以下是几种常见的实现方式:…

vue遮罩实现

vue遮罩实现

实现 Vue 遮罩的常见方法 使用 CSS 定位和透明度 创建一个全屏遮罩层,通过 CSS 固定定位覆盖整个视口,并设置半透明背景色。 <template> <div cl…

vue实现webshell

vue实现webshell

Vue 实现 WebShell 使用 Vue 实现 WebShell 需要结合前端与后端的交互,通常通过 WebSocket 或 HTTP 协议与服务器通信。以下是一个基于 Vue 和 WebSock…