当前位置:首页 > VUE

vue列表实现

2026-03-07 00:26:48VUE

Vue 列表实现方法

在 Vue 中实现列表渲染通常使用 v-for 指令,结合数组或对象数据动态生成 DOM 元素。以下是几种常见的实现方式:

基础列表渲染

使用 v-for 指令遍历数组,生成列表项。item 是当前元素,index 是可选索引。

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

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

对象遍历

v-for 也可以遍历对象的属性,参数顺序为 (value, key, index)

<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: '2021'
      }
    }
  }
}
</script>

使用组件渲染列表

将列表项封装为可复用的组件,通过 props 传递数据。

<template>
  <ul>
    <list-item
      v-for="(item, index) in items"
      :key="item.id"
      :item="item"
    />
  </ul>
</template>

<script>
import ListItem from './ListItem.vue'

export default {
  components: { ListItem },
  data() {
    return {
      items: [
        { id: 1, text: 'Item 1' },
        { id: 2, text: 'Item 2' }
      ]
    }
  }
}
</script>

条件渲染与列表结合

通过 v-if 或计算属性实现条件筛选后的列表渲染。

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

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, text: 'Item 1', isActive: true },
        { id: 2, text: 'Item 2', isActive: false }
      ]
    }
  },
  computed: {
    activeItems() {
      return this.items.filter(item => item.isActive)
    }
  }
}
</script>

性能优化

对于大型列表,可通过虚拟滚动(如 vue-virtual-scroller)减少 DOM 节点数量。

vue列表实现

<template>
  <RecycleScroller
    class="scroller"
    :items="largeList"
    :item-size="50"
    key-field="id"
  >
    <template v-slot="{ item }">
      <div class="item">
        {{ item.text }}
      </div>
    </template>
  </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: Array(1000).fill().map((_, i) => ({
        id: i,
        text: `Item ${i}`
      }))
    }
  }
}
</script>

注意事项

  1. key 属性:必须为每项提供唯一 key,通常使用 ID 而非索引,避免渲染问题。
  2. 数组更新:直接修改数组(如 this.items[0] = newValue)不会触发视图更新,应使用 Vue.set 或数组方法(push, splice 等)。
  3. 性能监控:超长列表需配合虚拟滚动或分页,避免内存问题。

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

相关文章

vue如何实现冒泡

vue如何实现冒泡

Vue 实现冒泡排序 在 Vue 中实现冒泡排序,可以通过数据绑定和响应式特性动态展示排序过程。以下是一个完整的实现示例,包含代码和详细说明。 数据准备 在 Vue 的 data 中定义一个数组作为…

vue实现全景

vue实现全景

Vue 实现全景效果的方法 使用 Vue 实现全景效果通常需要结合第三方库或框架,以下是几种常见的方法: 使用 Three.js 和 Vue-Three.js Three.js 是一个强大的 3D…

vue实现toggle

vue实现toggle

Vue 实现 Toggle 功能 在 Vue 中实现 toggle(切换)功能可以通过多种方式完成,以下是几种常见的方法: 使用 v-model 和 v-on 通过 v-model 绑定数据,结合…

vue实现Siri

vue实现Siri

Vue 实现 Siri 风格语音交互 实现类似 Siri 的语音交互功能需要结合语音识别、语音合成和前端交互逻辑。Vue 作为前端框架,可以很好地管理这些功能的交互状态。 语音识别集成 使用 Web…

vue实现尺子

vue实现尺子

Vue 实现尺子组件 实现一个尺子组件可以通过 Canvas 或纯 CSS 完成。以下是两种常见实现方式: 使用 Canvas 绘制尺子 通过 Canvas 动态绘制刻度线和数字,适合需要高精度或动…

vue实现增删

vue实现增删

Vue 实现增删功能 在 Vue 中实现增删功能通常涉及数据绑定、事件处理和列表渲染。以下是基于 Vue 2 或 Vue 3 的实现方法: 数据定义 初始化一个数组用于存储列表数据,并在 Vue 实…