当前位置:首页 > VUE

vue模糊查询的实现

2026-02-24 04:14:28VUE

实现模糊查询的方法

在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等专门库:

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)
}

多字段搜索

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

vue模糊查询的实现

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

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

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

相关文章

vue observer实现

vue observer实现

Vue Observer 实现原理 Vue 的响应式系统核心是通过 Object.defineProperty(Vue 2)或 Proxy(Vue 3)实现的 Observer 模式。以下是关键实现细…

vue实现模糊

vue实现模糊

Vue实现模糊搜索的方法 在Vue中实现模糊搜索功能通常需要结合输入框和列表渲染,通过监听输入内容动态过滤数据。以下是几种常见实现方式: 使用计算属性实现 计算属性适合处理需要响应式更新的搜索逻辑:…

vue 实现单点登录

vue 实现单点登录

单点登录(SSO)实现原理 单点登录允许用户通过一次身份验证访问多个系统。核心原理是用户首次登录后,认证中心颁发令牌(如Token),其他系统通过验证令牌实现免登录。 Vue中实现SSO的方案 基于…

vue实现效果展示

vue实现效果展示

Vue 实现效果展示的方法 动态数据绑定展示 通过 Vue 的响应式特性,实时展示数据变化。例如,表单输入与预览同步: <template> <div> <…

vue实现增量更新

vue实现增量更新

Vue 实现增量更新的方法 使用动态组件和 v-if 控制渲染 通过 v-if 或 v-show 控制组件的渲染,避免不必要的 DOM 操作。动态组件结合 keep-alive 可以缓存组件状态,减少…

vue双向实现

vue双向实现

Vue 双向绑定的实现原理 Vue 的双向绑定主要通过 v-model 指令实现,底层结合了数据劫持(Object.defineProperty 或 Proxy)和发布-订阅模式。以下是核心实现机制:…