当前位置:首页 > VUE

vue 实现列表

2026-02-10 03:37:57VUE

Vue 实现列表的基本方法

使用 Vue 实现列表通常通过 v-for 指令完成,可以渲染数组或对象的数据。以下是几种常见场景的实现方式。

渲染数组列表

通过 v-for 遍历数组,动态生成列表项。
示例代码:

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

<script>
export default {
  data() {
    return {
      items: [
        { name: 'Item 1' },
        { name: 'Item 2' },
        { name: 'Item 3' }
      ]
    }
  }
}
</script>

渲染对象列表

v-for 也可以遍历对象的属性。
示例代码:

vue 实现列表

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

<script>
export default {
  data() {
    return {
      object: {
        title: 'Vue Guide',
        author: 'Vue Team',
        published: '2023'
      }
    }
  }
}
</script>

动态绑定 key

为优化渲染性能,建议为每个列表项绑定唯一 key
示例代码:

<template>
  <div v-for="item in items" :key="item.id">
    {{ item.text }}
  </div>
</template>

条件渲染列表

结合 v-ifv-show 实现条件渲染。
示例代码:

vue 实现列表

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

使用计算属性过滤列表

通过计算属性实现动态过滤或排序。
示例代码:

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

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, name: 'Apple', category: 'fruit' },
        { id: 2, name: 'Carrot', category: 'vegetable' }
      ],
      filter: 'fruit'
    }
  },
  computed: {
    filteredItems() {
      return this.items.filter(item => item.category === this.filter)
    }
  }
}
</script>

进阶用法

列表动画

使用 <transition-group> 实现列表动画效果。
示例代码:

<template>
  <transition-group name="fade" tag="ul">
    <li v-for="item in items" :key="item.id">
      {{ item.name }}
    </li>
  </transition-group>
</template>

<style>
.fade-enter-active, .fade-leave-active {
  transition: opacity 0.5s;
}
.fade-enter, .fade-leave-to {
  opacity: 0;
}
</style>

分页加载

结合分页逻辑实现数据分批加载。
示例代码:

<template>
  <div>
    <ul>
      <li v-for="item in paginatedItems" :key="item.id">
        {{ item.name }}
      </li>
    </ul>
    <button @click="loadMore">Load More</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [...], // 所有数据
      pageSize: 10,
      currentPage: 1
    }
  },
  computed: {
    paginatedItems() {
      const start = (this.currentPage - 1) * this.pageSize
      return this.items.slice(0, start + this.pageSize)
    }
  },
  methods: {
    loadMore() {
      this.currentPage++
    }
  }
}
</script>

性能优化建议

  • 始终为 v-for 设置唯一的 key,避免使用索引。
  • 大数据量列表使用虚拟滚动(如 vue-virtual-scroller)。
  • 避免在 v-for 中直接使用复杂计算,优先使用计算属性。
  • 必要时通过 Object.freeze() 冻结静态数据提升性能。

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

相关文章

vue 方法实现

vue 方法实现

在 Vue 中,方法的实现通常通过 methods 选项完成。以下是 Vue 方法实现的核心要点和示例: 基本方法定义 在 Vue 组件中定义方法时,需将函数声明放在 methods 对象内。这些方…

vue element实现

vue element实现

Vue Element UI 实现 Vue Element UI 是基于 Vue.js 的组件库,提供丰富的 UI 组件,适合快速开发企业级中后台产品。以下是一些关键实现方法和步骤: 安装 Vue…

通过vue实现

通过vue实现

Vue 实现方法 安装 Vue 确保已安装 Node.js 和 npm,通过以下命令安装 Vue CLI: npm install -g @vue/cli 创建 Vue 项目 使用 Vue CLI…

vue 实现视频

vue 实现视频

Vue 实现视频播放功能 使用 Vue 实现视频播放功能可以通过 HTML5 的 <video> 标签或第三方库(如 video.js)来实现。以下是两种常见的方法: 使用 HTML5…

vue 实现上传

vue 实现上传

Vue 实现文件上传 使用 Vue 实现文件上传可以通过原生 HTML 的 <input type="file"> 或第三方库(如 axios、vue-upload-component)完…

vue遮罩实现

vue遮罩实现

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