当前位置:首页 > VUE

vue实现商品搜索功能

2026-01-20 09:12:47VUE

Vue 实现商品搜索功能

数据准备与绑定

在 Vue 组件中定义商品数据列表和搜索关键词。商品数据可以存储在 data 属性中,搜索关键词通过 v-model 双向绑定到输入框。

<template>
  <div>
    <input v-model="searchQuery" placeholder="搜索商品..." />
    <ul>
      <li v-for="product in filteredProducts" :key="product.id">
        {{ product.name }} - {{ product.price }}
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      searchQuery: '',
      products: [
        { id: 1, name: '手机', price: 2999 },
        { id: 2, name: '笔记本电脑', price: 5999 },
        { id: 3, name: '耳机', price: 399 }
      ]
    }
  }
}
</script>

计算属性实现搜索逻辑

使用 computed 属性动态过滤商品列表。通过 filter 方法匹配商品名称或描述是否包含搜索关键词(不区分大小写)。

computed: {
  filteredProducts() {
    return this.products.filter(product => {
      return product.name.toLowerCase().includes(this.searchQuery.toLowerCase())
    })
  }
}

优化搜索性能

对于大量数据,可以添加防抖(debounce)功能减少频繁计算。通过 lodash.debounce 或自定义函数实现延迟搜索。

import debounce from 'lodash.debounce'

export default {
  methods: {
    handleSearch: debounce(function() {
      this.filteredProducts = this.products.filter(product => 
        product.name.toLowerCase().includes(this.searchQuery.toLowerCase())
      )
    }, 300)
  }
}

高亮匹配关键词

在渲染结果时,使用自定义过滤器或方法高亮显示匹配的搜索词。

methods: {
  highlight(text) {
    if (!this.searchQuery) return text
    const regex = new RegExp(this.searchQuery, 'gi')
    return text.replace(regex, match => `<span class="highlight">${match}</span>`)
  }
}

样式增强

添加基础样式提升用户体验,例如输入框聚焦效果、结果列表间距和高亮颜色。

input {
  padding: 8px;
  width: 300px;
}
.highlight {
  background-color: yellow;
  font-weight: bold;
}

后端搜索集成(可选)

若数据量较大,需通过 API 请求后端搜索接口。在输入框监听 inputchange 事件,发送异步请求并更新结果。

vue实现商品搜索功能

methods: {
  async fetchSearchResults() {
    const response = await axios.get('/api/products', {
      params: { q: this.searchQuery }
    })
    this.filteredProducts = response.data
  }
}

注意事项

  • 空搜索词时应显示全部商品或友好提示。
  • 移动端需考虑虚拟键盘的遮挡问题。
  • 可添加加载状态提升交互反馈。

分享给朋友:

相关文章

php搜索功能的实现

php搜索功能的实现

实现PHP搜索功能的方法 数据库搜索 使用SQL的LIKE语句进行模糊匹配,适用于简单的搜索需求。 $searchTerm = $_GET['search']; $query = "SELECT *…

vue实现商品分页

vue实现商品分页

Vue 实现商品分页的方法 基础分页实现 安装必要的依赖(如axios用于请求数据) npm install axios 创建分页组件模板 <template> <div&g…

vue商品列表实现思路

vue商品列表实现思路

实现 Vue 商品列表的核心思路 数据驱动渲染 通过 Vue 的响应式特性,将商品数据存储在 data 或 Vuex/Pinia 状态管理中,使用 v-for 指令动态渲染列表。数据格式通常为数组,每…

vue前端搜索功能实现

vue前端搜索功能实现

实现Vue前端搜索功能的方法 双向绑定搜索关键词 在Vue组件中使用v-model绑定搜索输入框,实时获取用户输入的关键词。这种方法适用于简单的本地数据过滤。 <template>…

vue实现分页搜索功能

vue实现分页搜索功能

实现分页搜索功能 在Vue中实现分页搜索功能通常需要结合前端分页逻辑和后端API(或模拟数据)。以下是一个完整的实现方案: 基础数据准备 创建Vue组件时定义必要的数据属性: data() {…

vue实现input搜索功能

vue实现input搜索功能

实现基础搜索功能 在Vue中实现input搜索功能可以通过v-model绑定输入值,结合计算属性或方法过滤数据。以下是一个基础实现示例: <template> <div>…