当前位置:首页 > 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 事件,发送异步请求并更新结果。

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

注意事项

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

vue实现商品搜索功能

分享给朋友:

相关文章

vue实现搜索商品

vue实现搜索商品

Vue 实现商品搜索功能 在 Vue 中实现商品搜索功能,可以通过以下步骤完成。假设已有商品列表数据,需要实现前端搜索过滤功能。 数据准备 准备商品列表数据,通常从 API 获取或本地定义: da…

vue实现商品展示

vue实现商品展示

使用 Vue 实现商品展示 商品数据准备 商品数据可以存储在 Vue 组件的 data 中,或者通过 API 从后端获取。以下是一个简单的商品数据示例: data() { return {…

vue实现商品详解

vue实现商品详解

Vue 实现商品详情页功能 技术栈选择 Vue 3 + Vue Router + Pinia(状态管理)+ Axios(数据请求)+ Element UI/Vant(可选UI库) 核心功能模块 数…

vue实现商品卡片

vue实现商品卡片

Vue 实现商品卡片 在 Vue 中实现商品卡片可以通过组件化的方式完成,以下是一个完整的实现方案: 商品卡片组件 <template> <div class="produc…

vue实现搜索功能

vue实现搜索功能

实现搜索功能的基本思路 在Vue中实现搜索功能通常需要结合数据绑定、事件监听和过滤逻辑。可以通过计算属性或方法对数据进行实时筛选。 使用计算属性实现搜索 通过v-model绑定搜索输入框,利用计算属…

vue实现商品橱窗

vue实现商品橱窗

实现商品橱窗的基本结构 使用Vue.js创建商品橱窗需要先搭建基本结构。商品橱窗通常包含商品列表、商品卡片、筛选和排序功能。在Vue项目中,可以通过组件化方式实现这些功能。 创建商品列表组件,用于…