当前位置:首页 > 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 中的实现方法 使用 HTML5 原生拖放 API Vue 可以结合 HTML5 的拖放 API 实现基础拖拽功能。通过 draggable 属性标记可拖拽元素,监听 dragst…

vue请求实现进度条

vue请求实现进度条

实现请求进度条的方法 在Vue中实现请求进度条可以通过多种方式完成,常见的有使用第三方库如axios结合nprogress或自定义进度条组件。以下是几种实现方法: 使用axios和nprogress…

vue实现switch

vue实现switch

Vue 实现 Switch 开关组件 在 Vue 中实现 Switch 开关组件可以通过自定义组件或使用现有 UI 库完成。以下是几种常见实现方式: 自定义 Switch 组件 创建一个基础 Sw…

vue实现必填

vue实现必填

Vue 实现表单必填验证的方法 在Vue中实现表单必填验证可以通过多种方式完成,以下是几种常见的方法: 使用HTML5原生属性 最简单的必填验证可以通过HTML5的required属性实现: &l…

vue实现抽奖

vue实现抽奖

Vue 实现抽奖功能 基本抽奖逻辑 创建一个Vue组件,包含奖品列表、抽奖按钮和结果显示区域。使用随机数生成器选择奖品。 <template> <div> <…

vue监听实现

vue监听实现

Vue 监听实现方法 在 Vue 中可以通过多种方式实现监听数据变化或事件触发,以下是常见的几种方法: 使用 watch 选项 watch 是 Vue 提供的核心功能之一,用于观察和响应 Vue 实…