当前位置:首页 > 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>

使用过滤器方法

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

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

使用第三方库

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

import { groupBy } from 'lodash'

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

动态分类选择

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

<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页面分离的实现方法 将Vue页面分离为多个组件或模块,有助于提升代码可维护性和复用性。以下是几种常见的实现方式: 组件化拆分 通过将页面拆分为多个子组件,每个组件负责特定功能或UI部分。使用…

vue怎么实现选中删除

vue怎么实现选中删除

实现选中删除功能的方法 在Vue中实现选中删除功能通常涉及以下几个关键步骤: 数据绑定与选中状态管理 使用v-model或v-for指令绑定列表数据,结合复选框或单选按钮实现选中状态管理。例如…

vue实现字母添加排序

vue实现字母添加排序

实现字母添加排序的方法 在Vue中实现字母添加排序功能,可以通过以下步骤完成: 创建Vue实例并定义数据 new Vue({ el: '#app', data: { letters…

vue实现选中单元格

vue实现选中单元格

Vue 实现选中单元格的方法 基础实现思路 在 Vue 中实现选中单元格功能,通常可以通过动态绑定 class 或 style 来实现。以下是一个基于表格的简单实现示例: <templ…

vue实现分屏

vue实现分屏

Vue 实现分屏的方法 分屏功能通常用于展示多个独立内容区域,以下是几种常见的实现方式: 使用 CSS Grid 布局 通过 CSS Grid 可以轻松创建分屏布局,在 Vue 组件中直接应用样式:…

vue实现后退

vue实现后退

Vue 实现后退功能的方法 在 Vue 中实现后退功能通常可以通过以下几种方式完成,具体取决于应用场景和需求。 使用 window.history API 通过原生 JavaScript 的 wi…