当前位置:首页 > 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
  }
}

注意事项

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

分享给朋友:

相关文章

vue 搜索功能实现

vue 搜索功能实现

实现 Vue 搜索功能的基本步骤 在 Vue 中实现搜索功能通常需要结合数据绑定、计算属性和方法。以下是几种常见的实现方式: 基于计算属性的搜索 <template> <div…

vue 实现商品列表

vue 实现商品列表

实现商品列表的基本结构 在Vue中实现商品列表,通常需要创建一个组件来展示商品数据。可以使用v-for指令循环渲染商品列表,并通过数据绑定动态显示商品信息。 <template> &…

vue实现搜索功能

vue实现搜索功能

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

vue实现商品分页

vue实现商品分页

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

vue实现商品卡片列表

vue实现商品卡片列表

Vue实现商品卡片列表 使用Vue实现商品卡片列表需要结合组件化开发思想,通过数据驱动视图的方式动态渲染商品信息。以下是具体实现方法: 数据准备 在Vue组件中定义商品数据数组,每个商品对象包含必要…

vue实现商品列表总价

vue实现商品列表总价

实现商品列表总价计算 在Vue中实现商品列表总价计算,通常涉及数据绑定、计算属性和方法调用。以下是一种常见的实现方式: 数据准备 商品列表数据通常存储在组件的data或props中,每个商品对象应包…