当前位置:首页 > VUE

vue实现检索效果

2026-02-17 12:50:27VUE

Vue 实现检索功能

核心思路
通过 Vue 的响应式特性,结合计算属性或方法,实时过滤数据列表。通常需要以下关键步骤:

数据绑定与输入监听
在模板中使用 v-model 绑定搜索输入框,监听用户输入:

<template>
  <input v-model="searchQuery" placeholder="输入关键词搜索">
  <ul>
    <li v-for="item in filteredList" :key="item.id">{{ item.name }}</li>
  </ul>
</template>

计算属性实现过滤
使用 computed 根据搜索词动态过滤数组:

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

高级优化方案

防抖处理
频繁输入时通过防抖减少计算次数(使用 Lodash 或自定义):

import { debounce } from 'lodash';

methods: {
  handleSearch: debounce(function() {
    this.filteredList = this.originalList.filter(item => 
      item.name.includes(this.searchQuery)
    )
  }, 300)
}

多字段搜索
扩展过滤逻辑支持多个字段匹配:

computed: {
  filteredList() {
    const query = this.searchQuery.toLowerCase()
    return this.originalList.filter(item => 
      ['name', 'category'].some(field => 
        String(item[field]).toLowerCase().includes(query)
      )
    )
  }
}

服务端搜索集成

API 请求示例
当数据量较大时,改用后端搜索接口:

methods: {
  async fetchResults() {
    const res = await axios.get('/api/search', {
      params: { keyword: this.searchQuery }
    })
    this.filteredList = res.data
  }
}

注意事项

vue实现检索效果

  • 对空搜索词的处理:可设置默认返回全部数据或提示信息
  • 搜索性能:前端搜索适合小数据集(通常 < 1000 条)
  • 用户体验:添加加载状态和结果为空时的友好提示

标签: 效果vue
分享给朋友:

相关文章

vue树形实现

vue树形实现

Vue 树形组件实现方法 使用递归组件实现树形结构 递归组件是 Vue 中实现树形结构的常见方法。通过组件调用自身的方式,可以轻松构建多层嵌套的树形结构。 <template> &l…

vue observer实现

vue observer实现

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

vue实现fullpage

vue实现fullpage

Vue 实现 FullPage 效果 在 Vue 中实现全屏滚动(FullPage)效果可以通过多种方式完成,以下是几种常见的方法: 使用现有库 vue-fullpage.js 安装 vue-ful…

vue实现心电图

vue实现心电图

Vue 实现心电图效果 在 Vue 中实现心电图效果通常需要结合 Canvas 或 SVG 进行动态绘图,模拟心电图数据的实时变化。以下是两种实现方式的核心思路和代码示例: 使用 Canvas 绘制…

vue for实现

vue for实现

Vue 中的 v-for 指令 v-for 是 Vue.js 中用于渲染列表数据的核心指令,通过遍历数组或对象生成动态内容。 基本语法(数组) <ul> <li v-for…

vue实现导航

vue实现导航

使用 Vue Router 实现导航 Vue Router 是 Vue.js 官方提供的路由管理器,用于构建单页应用(SPA)的导航系统。以下是实现导航的基本步骤。 安装 Vue Router n…