vue实现分类查找
Vue实现分类查找的方法
在Vue中实现分类查找功能,可以通过以下几种方式实现:
使用计算属性过滤数据
计算属性是Vue中处理数据过滤的理想选择,它能自动缓存结果,提高性能。
computed: {
filteredItems() {
return this.items.filter(item => {
return item.category === this.selectedCategory
})
}
}
结合v-for渲染过滤结果
在模板中直接使用计算属性渲染过滤后的数据:
<template>
<div>
<select v-model="selectedCategory">
<option v-for="category in categories" :value="category">
{{ category }}
</option>
</select>
<ul>
<li v-for="item in filteredItems" :key="item.id">
{{ item.name }}
</li>
</ul>
</div>
</template>
使用watch实现动态过滤
当需要更复杂的过滤逻辑时,可以使用watch配合methods:
data() {
return {
filteredData: [],
searchQuery: ''
}
},
watch: {
searchQuery(newVal) {
this.filterData(newVal)
}
},
methods: {
filterData(query) {
this.filteredData = this.items.filter(item => {
return item.name.toLowerCase().includes(query.toLowerCase())
})
}
}
使用第三方库增强功能
对于更高级的分类查找需求,可以考虑使用以下库:
- Lodash的.filter和.debounce
- Fuse.js实现模糊搜索
- VueUse的useFilter组合式API
组合式API实现
在Vue3中可以使用组合式API更简洁地实现:
import { computed, ref } from 'vue'
export default {
setup() {
const searchTerm = ref('')
const items = ref([...])
const filteredItems = computed(() => {
return items.value.filter(item =>
item.name.includes(searchTerm.value)
)
})
return { searchTerm, filteredItems }
}
}
多条件分类查找
实现多条件分类查找时,可以构建更复杂的过滤函数:
computed: {
multiFilteredItems() {
return this.items.filter(item => {
const matchesCategory = this.selectedCategories.length === 0 ||
this.selectedCategories.includes(item.category)
const matchesSearch = item.name.toLowerCase().includes(
this.searchTerm.toLowerCase()
)
return matchesCategory && matchesSearch
})
}
}






