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

vue 实现tabs

Vue 实现 Tabs 组件的方法 使用动态组件和 v-for 在 Vue 中实现 Tabs 可以通过动态组件和 v-for 指令结合完成。定义一个 tabs 数组,包含每个标签的标题和对应的组件。…

vue实现建模

vue实现建模

Vue 实现建模的方法 在 Vue 中实现建模通常涉及数据绑定、组件化和状态管理。以下是几种常见的方法: 数据驱动建模 Vue 的核心是数据驱动视图。通过定义数据模型,Vue 会自动更新 DOM。例…

vue页面实现

vue页面实现

Vue 页面实现方法 创建 Vue 组件 使用 Vue 单文件组件(SFC)方式创建页面,文件扩展名为 .vue。一个基本的 Vue 组件包含三个部分:模板(template)、脚本(script)和…

vue 实现滚动

vue 实现滚动

实现滚动的基本方法 在Vue中实现滚动效果可以通过多种方式完成,包括使用原生JavaScript、CSS或第三方库。以下是一些常见的方法: 使用window.scrollTo方法实现页面滚动 可以通…

vue 实现表单

vue 实现表单

Vue 表单实现方法 Vue.js 提供了多种方式实现表单,包括双向数据绑定、表单验证和动态表单生成。以下是常见的实现方法: 基础表单绑定 使用 v-model 指令实现表单元素与数据的双向绑定:…

vue实现list

vue实现list

Vue 实现列表渲染 在 Vue 中,可以使用 v-for 指令来渲染列表。v-for 指令基于一个数组或对象来渲染一个列表,可以遍历数组或对象的属性。 基本列表渲染 <template>…