当前位置:首页 > VUE

vue 实现过滤

2026-03-07 03:09:55VUE

Vue 实现过滤的方法

在 Vue 中实现过滤功能可以通过多种方式完成,以下是一些常见的方法:

使用计算属性过滤数据

计算属性是 Vue 中实现数据过滤的推荐方式,它能够根据依赖的数据动态计算并返回过滤后的结果。

<template>
  <div>
    <input v-model="searchQuery" placeholder="Search...">
    <ul>
      <li v-for="item in filteredItems" :key="item.id">
        {{ item.name }}
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      searchQuery: '',
      items: [
        { id: 1, name: 'Apple' },
        { id: 2, name: 'Banana' },
        { id: 3, name: 'Orange' }
      ]
    }
  },
  computed: {
    filteredItems() {
      return this.items.filter(item =>
        item.name.toLowerCase().includes(this.searchQuery.toLowerCase())
      )
    }
  }
}
</script>

使用过滤器方法

Vue 2.x 支持自定义过滤器,可以在模板中使用管道符 | 进行过滤操作。虽然 Vue 3 不再内置过滤器功能,但可以通过方法实现类似效果。

<template>
  <div>
    <input v-model="searchQuery" placeholder="Search...">
    <ul>
      <li v-for="item in filterItems(items, searchQuery)" :key="item.id">
        {{ item.name }}
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      searchQuery: '',
      items: [
        { id: 1, name: 'Apple' },
        { id: 2, name: 'Banana' },
        { id: 3, name: 'Orange' }
      ]
    }
  },
  methods: {
    filterItems(items, query) {
      return items.filter(item =>
        item.name.toLowerCase().includes(query.toLowerCase())
      )
    }
  }
}
</script>

使用第三方库

对于更复杂的过滤需求,可以考虑使用 Lodash 等工具库提供的过滤函数。

import _ from 'lodash'

export default {
  computed: {
    filteredItems() {
      return _.filter(this.items, item => 
        item.name.toLowerCase().includes(this.searchQuery.toLowerCase())
      )
    }
  }
}

组合式 API 实现

在 Vue 3 中使用组合式 API 可以更灵活地实现过滤功能。

<template>
  <div>
    <input v-model="searchQuery" placeholder="Search...">
    <ul>
      <li v-for="item in filteredItems" :key="item.id">
        {{ item.name }}
      </li>
    </ul>
  </div>
</template>

<script>
import { computed, ref } from 'vue'

export default {
  setup() {
    const searchQuery = ref('')
    const items = ref([
      { id: 1, name: 'Apple' },
      { id: 2, name: 'Banana' },
      { id: 3, name: 'Orange' }
    ])

    const filteredItems = computed(() => {
      return items.value.filter(item =>
        item.name.toLowerCase().includes(searchQuery.value.toLowerCase())
      )
    })

    return { searchQuery, filteredItems }
  }
}
</script>

注意事项

vue 实现过滤

  • 对于大数据集,考虑添加防抖功能优化性能
  • 复杂过滤条件可以使用正则表达式增强匹配能力
  • 服务端过滤可能更适合超大数据集的情况

标签: vue
分享给朋友:

相关文章

vue 页签实现

vue 页签实现

Vue 页签实现方法 在 Vue 中实现页签功能通常涉及动态组件、路由或状态管理。以下是几种常见的实现方式: 使用动态组件 通过 Vue 的 <component> 动态组件结合 v-f…

vue实现上移下移插件

vue实现上移下移插件

实现上移下移功能的 Vue 插件 在 Vue 中实现列表项的上移和下移功能,可以通过自定义指令或组件封装的方式完成。以下是两种常见实现方式: 基于数组操作的通用方法 通过操作数组索引实现元素位置交换…

vue 指令实现

vue 指令实现

Vue 指令实现 Vue 指令是 Vue.js 提供的特殊属性,用于在 DOM 元素上添加特殊行为。指令以 v- 前缀开头,例如 v-model、v-if、v-for 等。以下是实现自定义指令和常用内…

vue权限实现

vue权限实现

Vue 权限实现方案 基于路由的权限控制 通过路由守卫实现权限验证,在路由配置中添加meta字段标记权限要求。在router.beforeEach中检查用户权限与路由要求的匹配情况。 // rout…

vue实现换行

vue实现换行

Vue 中实现换行的几种方法 在 Vue 中实现换行可以通过多种方式,具体取决于使用场景和需求。以下是常见的几种方法: 使用 HTML 的 <br> 标签 在模板中直接使用 <br…

vue实现换肤

vue实现换肤

使用 CSS 变量实现换肤 在 Vue 项目中,可以通过 CSS 变量(Custom Properties)动态切换主题色。CSS 变量可以在运行时修改,适合实现换肤功能。 定义全局 CSS 变量:…