当前位置:首页 > 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 筛选实现方法 使用计算属性实现筛选 计算属性是 Vue 中实现数据筛选的常用方式。通过定义一个计算属性,可以根据输入的条件动态过滤数据。 <template> <div…

vue实现文字

vue实现文字

Vue 中实现文字显示的方法 在 Vue 中实现文字显示可以通过多种方式,包括插值表达式、指令、组件等。以下是几种常见的实现方法: 插值表达式 使用双大括号 {{ }} 进行文本插值,这是 Vue…

vue实现签章

vue实现签章

Vue 实现签章功能 签章功能通常包括手写签名、电子印章等。以下是基于 Vue 的实现方法: 使用 canvas 实现手写签名 安装依赖(如需要): npm install signature_p…

vue实现频道

vue实现频道

Vue实现频道功能的方法 使用Vue Router动态路由 通过Vue Router的动态路由功能可以轻松实现频道切换。在路由配置中定义动态参数,组件内通过this.$route.params获取当前…

vue实现mouseout

vue实现mouseout

Vue 实现 mouseout 事件的方法 在 Vue 中实现 mouseout 事件可以通过多种方式完成,以下是几种常见的方法: 使用 v-on 指令 Vue 提供了 v-on 指令(或简写为 @…

vue实现ssr

vue实现ssr

Vue 实现 SSR(服务端渲染) Vue 的服务端渲染(SSR)允许在服务器端生成完整的 HTML 内容,再发送到客户端,提升首屏加载速度和 SEO 友好性。以下是实现 Vue SSR 的关键步骤和…