当前位置:首页 > VUE

vue实现列表分类

2026-01-16 08:31:53VUE

Vue 实现列表分类的方法

使用计算属性分类

通过计算属性对原始数组进行分类处理,返回分组后的对象或数组。适用于静态数据或需要响应式更新的场景。

computed: {
  categorizedItems() {
    return this.items.reduce((acc, item) => {
      const category = item.category || '未分类'
      if (!acc[category]) acc[category] = []
      acc[category].push(item)
      return acc
    }, {})
  }
}

模板中使用 v-for 嵌套渲染:

<div v-for="(group, category) in categorizedItems" :key="category">
  <h3>{{ category }}</h3>
  <ul>
    <li v-for="item in group" :key="item.id">{{ item.name }}</li>
  </ul>
</div>

使用过滤器方法

定义分类方法在需要时调用,适合需要动态改变分类逻辑的场景。

vue实现列表分类

methods: {
  filterByCategory(category) {
    return this.items.filter(item => item.category === category)
  }
}

使用第三方库

借助 lodash 的 groupBy 实现更简洁的分类:

import { groupBy } from 'lodash'

computed: {
  groupedItems() {
    return groupBy(this.items, 'category')
  }
}

动态分类选择

添加交互控件让用户选择分类方式:

vue实现列表分类

<select v-model="currentCategory">
  <option value="all">全部</option>
  <option v-for="cat in uniqueCategories" :value="cat">{{ cat }}</option>
</select>

<ul>
  <li v-for="item in filteredList" :key="item.id">{{ item.name }}</li>
</ul>
computed: {
  uniqueCategories() {
    return [...new Set(this.items.map(item => item.category))]
  },
  filteredList() {
    return this.currentCategory === 'all' 
      ? this.items
      : this.items.filter(item => item.category === this.currentCategory)
  }
}

分类性能优化

对于大型列表,使用虚拟滚动或分页加载:

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

服务端分类

当数据量极大时,建议在服务端完成分类:

async fetchCategorizedData() {
  const res = await axios.get('/api/items', {
    params: { groupBy: 'category' }
  })
  this.groupedData = res.data
}

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

相关文章

vue实现微博发布动态

vue实现微博发布动态

使用Vue实现微博发布动态功能 创建Vue组件结构 新建一个WeiboPost.vue组件,包含文本框、图片上传和发布按钮: <template> <div class="we…

vue实现图片

vue实现图片

Vue 实现图片功能的方法 静态图片引入 在 Vue 项目中,可以通过 src 属性直接引入静态图片。图片通常放在 public 或 assets 目录下。 <template> &…

vue实现ide

vue实现ide

Vue 实现 IDE 的基本思路 使用 Vue 构建一个简易的集成开发环境(IDE)需要整合代码编辑器、文件管理、终端模拟等功能。以下是关键实现步骤和推荐工具。 核心功能模块 代码编辑器 使用…

vue实现复制

vue实现复制

Vue 实现复制功能 在 Vue 中实现复制功能可以通过多种方式完成,以下是几种常见的方法: 方法一:使用 Clipboard API Clipboard API 是现代浏览器提供的一种原生 AP…

vue实现抽奖轮盘

vue实现抽奖轮盘

实现抽奖轮盘的基本思路 使用Vue实现抽奖轮盘的核心在于动态旋转动画和结果判定。通常需要结合CSS动画或JavaScript动画库(如GSAP)控制轮盘的旋转角度,并通过随机数或后端接口确定最终奖项。…

vue缺省页实现

vue缺省页实现

Vue 缺省页实现方法 使用条件渲染控制显示 通过v-if或v-show指令控制缺省页的显示。当数据为空时展示缺省组件,否则显示正常内容。 <template> <div>…