当前位置:首页 > VUE

vue 实现搜索

2026-03-27 17:54:58VUE

Vue 实现搜索功能的方法

使用 v-model 绑定输入框

在 Vue 中,可以通过 v-model 双向绑定输入框的值,实时监听用户的输入。
创建一个数据属性 searchQuery 来存储搜索关键词:

data() {
  return {
    searchQuery: '',
    items: [] // 原始数据列表
  }
}

模板部分:

<input v-model="searchQuery" placeholder="输入关键词搜索">

计算属性过滤数据

利用计算属性 computed 动态过滤数据,避免每次输入都重新计算。
根据 searchQuery 过滤 items 列表:

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

使用 watch 监听搜索词

如果需要在搜索时触发异步操作(如 API 请求),可以使用 watch 监听 searchQuery 的变化:

watch: {
  searchQuery(newVal) {
    if (newVal.length > 2) { // 避免频繁请求
      this.fetchSearchResults(newVal)
    }
  }
},
methods: {
  async fetchSearchResults(query) {
    const response = await axios.get(`/api/search?q=${query}`)
    this.items = response.data
  }
}

防抖优化性能

通过 Lodash 的 debounce 减少频繁搜索的请求次数:

import { debounce } from 'lodash'

methods: {
  fetchSearchResults: debounce(function(query) {
    // API 请求逻辑
  }, 500) // 延迟 500ms
}

显示搜索结果

在模板中渲染过滤后的列表:

vue 实现搜索

<ul v-if="filteredItems.length">
  <li v-for="item in filteredItems" :key="item.id">
    {{ item.name }}
  </li>
</ul>
<p v-else>暂无结果</p>

完整示例代码

<template>
  <div>
    <input v-model="searchQuery" placeholder="搜索...">
    <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' }
      ]
    }
  },
  computed: {
    filteredItems() {
      return this.items.filter(item =>
        item.name.toLowerCase().includes(this.searchQuery.toLowerCase())
      )
    }
  }
}
</script>

标签: vue
分享给朋友:

相关文章

vue实现画圆弧并着色

vue实现画圆弧并着色

在 Vue 中实现画圆弧并着色 使用 Canvas API 绘制圆弧 在 Vue 组件的 mounted 钩子中,通过 Canvas API 绘制圆弧。创建一个 canvas 元素并获取其上下文:…

vue实现摘要

vue实现摘要

Vue 实现摘要的方法 在 Vue 中实现文本摘要功能通常涉及截取文本的前部分内容并添加省略号。可以通过计算属性、过滤器或自定义指令来实现。 计算属性实现 在 Vue 组件中定义一个计算属性,用于截…

vue实现递归

vue实现递归

Vue 实现递归组件的方法 在 Vue 中实现递归组件通常用于处理树形结构数据(如菜单、评论列表、文件目录等)。以下是具体实现方法: 定义递归组件 通过 name 选项让组件可以递归调用自身:…

vue实现token

vue实现token

Vue 中实现 Token 认证的方法 在 Vue 中实现 Token 认证通常涉及前端与后端的交互,包括 Token 的获取、存储、发送和刷新等操作。以下是具体实现步骤: 获取 Token 用户登…

vue 实现excel

vue 实现excel

Vue 实现 Excel 功能 前端导出 Excel 使用 xlsx 库可以轻松实现前端 Excel 导出功能。安装依赖: npm install xlsx 导出 Excel 示例代码: impo…

轮播vue实现

轮播vue实现

使用 Vue 实现轮播功能 基础轮播实现 安装依赖(如使用 Swiper): npm install swiper vue-awesome-swiper 组件代码示例: <templ…