当前位置:首页 > VUE

vue模糊查询的实现

2026-02-24 04:14:28VUE

实现模糊查询的方法

在Vue中实现模糊查询通常需要结合输入框的监听和数据处理逻辑。以下是几种常见的实现方式:

使用计算属性实现

计算属性可以基于输入的关键词实时过滤数据:

vue模糊查询的实现

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

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

使用watch实现

当需要更复杂的逻辑或异步操作时,可以使用watch:

data() {
  return {
    searchQuery: '',
    items: [...],
    filteredItems: []
  }
},
watch: {
  searchQuery(newVal) {
    const query = newVal.toLowerCase()
    this.filteredItems = this.items.filter(item =>
      item.name.toLowerCase().includes(query)
    )
  }
}

使用第三方库实现

对于更高级的模糊搜索,可以使用Fuse.js等专门库:

vue模糊查询的实现

import Fuse from 'fuse.js'

computed: {
  fuse() {
    return new Fuse(this.items, {
      keys: ['name'],
      threshold: 0.4
    })
  },
  filteredItems() {
    return this.searchQuery 
      ? this.fuse.search(this.searchQuery).map(r => r.item)
      : this.items
  }
}

优化性能

对于大数据集,可以添加防抖处理:

import { debounce } from 'lodash'

methods: {
  search: debounce(function(query) {
    // 搜索逻辑
  }, 300)
}

多字段搜索

扩展模糊查询到多个字段:

filteredItems() {
  const query = this.searchQuery.toLowerCase()
  return this.items.filter(item =>
    item.name.toLowerCase().includes(query) ||
    item.description.toLowerCase().includes(query)
  )
}

以上方法可以根据具体需求选择或组合使用,实现不同复杂度的模糊查询功能。

标签: 模糊vue
分享给朋友:

相关文章

vue 表格实现

vue 表格实现

Vue 表格实现方法 在 Vue 中实现表格功能可以通过多种方式完成,以下介绍几种常见的方法: 使用原生 HTML 表格 最简单的表格可以通过 Vue 模板中的原生 HTML 表格元素实现:…

vue实现autocomplete

vue实现autocomplete

Vue 实现 Autocomplete 功能 Vue 中实现 Autocomplete(自动完成)功能可以通过自定义组件或使用现有库完成。以下是几种常见方法: 方法一:使用 Vue 原生实现…

vue 实现grid

vue 实现grid

在Vue中实现Grid布局可以通过多种方式完成,以下是几种常见的方法: 使用CSS Grid布局 CSS Grid是一种强大的布局系统,可以直接在Vue组件的样式中使用。以下是一个简单的示例:…

vue 实现闪烁

vue 实现闪烁

Vue 实现闪烁效果的方法 方法一:使用 CSS 动画 在 Vue 组件中定义一个闪烁的 CSS 动画,通过绑定 class 或 style 来控制元素的闪烁效果。 <template>…

vue实现tree

vue实现tree

Vue 实现 Tree 组件 使用 Vue 实现 Tree 组件可以通过递归组件的方式来实现层级结构展示。以下是一个完整的实现方法: 基础递归组件实现 创建 Tree 组件文件 Tree.vue,…

vue单选实现

vue单选实现

Vue 单选实现 在 Vue 中实现单选功能可以通过多种方式完成,以下是几种常见的方法: 使用 v-model 绑定单选按钮 通过 v-model 绑定一个变量,可以实现单选效果。当用户选择不同的选…