当前位置:首页 > VUE

vue列表实现

2026-01-07 08:36:16VUE

Vue 列表实现方法

使用 v-for 指令

v-for 是 Vue 中用于渲染列表的核心指令,基于数据源动态生成 DOM 元素。语法格式为 item in items(item, index) in items

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

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

绑定 key 属性

为每个列表项添加唯一的 key 属性,通常是数据中的唯一标识符(如 id)。这有助于 Vue 高效更新 DOM。

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

嵌套列表渲染

v-for 可嵌套使用,实现多维数据渲染。

<template>
  <div v-for="category in categories" :key="category.id">
    <h3>{{ category.name }}</h3>
    <ul>
      <li v-for="product in category.products" :key="product.id">
        {{ product.name }}
      </li>
    </ul>
  </div>
</template>

条件渲染结合

通过 v-ifv-show 控制列表项的显示逻辑。

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

动态过滤与排序

使用计算属性对列表数据进行处理,实现过滤或排序功能。

<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', type: 'fruit' },
        { id: 2, name: 'Carrot', type: 'vegetable' }
      ],
      filterType: 'fruit'
    }
  },
  computed: {
    filteredItems() {
      return this.items.filter(item => item.type === this.filterType)
    }
  }
}
</script>

使用 template 标签包裹

当需要渲染多个兄弟元素且不希望引入额外 DOM 节点时,可使用 <template> 包裹。

<template v-for="item in items" :key="item.id">
  <p>{{ item.name }}</p>
  <button @click="select(item)">Select</button>
</template>

性能优化

对于长列表(如超过 1000 项),建议使用虚拟滚动库(如 vue-virtual-scroller)减少 DOM 节点数量。

<template>
  <RecycleScroller
    class="scroller"
    :items="items"
    :item-size="50"
    key-field="id"
  >
    <template v-slot="{ item }">
      <div class="item">
        {{ item.name }}
      </div>
    </template>
  </RecycleScroller>
</template>

vue列表实现

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

相关文章

vue实现裁剪头像

vue实现裁剪头像

Vue 实现头像裁剪功能 实现头像裁剪功能通常需要结合第三方库如 cropperjs 或 vue-cropper。以下是两种常见实现方式: 使用 vue-cropper 库 安装依赖: np…

vue登录业务的实现

vue登录业务的实现

实现登录业务的基本流程 在Vue中实现登录业务通常涉及前端界面设计、表单验证、API请求交互、状态管理以及路由控制等环节。以下是核心实现步骤: 登录表单设计与验证 创建包含用户名和密码输入框的登录…

vue实现视频会议

vue实现视频会议

使用 Vue 实现视频会议 技术选型 Vue.js 作为前端框架,结合 WebRTC 技术实现实时音视频通信。常用的库包括: peerjs:简化 WebRTC 的点对点连接。 socket.io:…

vue使用vr实现标注

vue使用vr实现标注

Vue 中使用 VR 实现标注的方法 在 Vue 项目中结合 VR 技术实现标注功能,可以通过 WebXR 和 Three.js 等库实现。以下为具体实现方法: 安装依赖 确保项目中已安装 Thr…

vue 实现在线预览

vue 实现在线预览

Vue 实现在线预览的常见方法 使用 iframe 嵌入 通过 iframe 标签可以嵌入多种类型的文件,如 PDF、图片、网页等。需要确保文件地址可访问。 <template> &…

vue实现下拉刷新组件

vue实现下拉刷新组件

实现下拉刷新组件的核心思路 下拉刷新功能通常通过监听触摸事件、滚动位置和动画效果实现。Vue中可以利用自定义指令或封装组件完成,以下为两种常见实现方式。 基于自定义指令的实现 创建指令监听触摸事件…