…">
当前位置:首页 > VUE

vue实现搜素demo

2026-01-20 01:30:02VUE

以下是一个基于Vue实现的搜索功能Demo的完整方案,包含关键代码和实现逻辑:

vue实现搜素demo

基础组件结构

<template>
  <div class="search-demo">
    <input 
      v-model="searchQuery" 
      @input="handleSearch" 
      placeholder="输入搜索内容"
    />
    <ul v-if="results.length">
      <li v-for="item in results" :key="item.id">
        {{ item.name }}
      </li>
    </ul>
    <p v-else-if="searchQuery && !results.length">无匹配结果</p>
  </div>
</template>

数据与逻辑实现

<script>
export default {
  data() {
    return {
      searchQuery: '',
      results: [],
      allItems: [
        { id: 1, name: 'Vue基础教程' },
        { id: 2, name: 'React进阶指南' },
        { id: 3, name: 'JavaScript设计模式' }
      ]
    }
  },
  methods: {
    handleSearch() {
      if (!this.searchQuery.trim()) {
        this.results = []
        return
      }

      const query = this.searchQuery.toLowerCase()
      this.results = this.allItems.filter(item => 
        item.name.toLowerCase().includes(query)
      )
    }
  }
}
</script>

样式优化

<style scoped>
.search-demo {
  max-width: 400px;
  margin: 0 auto;
}

input {
  width: 100%;
  padding: 8px;
  border: 1px solid #ddd;
  border-radius: 4px;
}

ul {
  list-style: none;
  padding: 0;
  margin-top: 10px;
}

li {
  padding: 8px;
  border-bottom: 1px solid #eee;
}
</style>

高级功能扩展

添加防抖优化搜索性能:

import _ from 'lodash'

export default {
  methods: {
    handleSearch: _.debounce(function() {
      // 原有搜索逻辑
    }, 300)
  }
}

实现异步API搜索:

methods: {
  async handleSearch() {
    try {
      const response = await axios.get('/api/search', {
        params: { q: this.searchQuery }
      })
      this.results = response.data
    } catch (error) {
      console.error('搜索失败:', error)
    }
  }
}

功能增强建议

  • 添加高亮匹配文本功能
  • 实现搜索历史记录
  • 增加结果分类筛选
  • 添加加载状态指示器
  • 支持键盘导航选择结果

这个Demo展示了Vue实现搜索功能的核心模式,可以根据实际需求进行扩展和优化。

vue实现搜素demo

标签: vuedemo
分享给朋友:

相关文章

vue异步组建实现原理

vue异步组建实现原理

Vue 异步组件实现原理 Vue 的异步组件允许将组件按需加载,通常用于代码分割或延迟加载非关键组件。其核心原理基于 Promise 和动态导入。 基本实现方式 通过 defineAsyncCom…

vue前端实现下载进度

vue前端实现下载进度

实现下载进度条的基本思路 在Vue中实现下载进度条,通常需要结合XMLHttpRequest或Fetch API来监听下载进度事件。通过计算已下载数据与总数据的比例,动态更新进度条的显示。 使用XM…

vue实现a4打印模板

vue实现a4打印模板

使用Vue实现A4打印模板 在Vue中实现A4打印模板需要结合CSS的打印样式和Vue的模板渲染能力。以下是具体实现方法: 设置A4纸张尺寸 在CSS中定义A4纸张的标准尺寸(210mm × 297…

vue实现边框

vue实现边框

Vue 实现边框的方法 在 Vue 中实现边框效果可以通过多种方式完成,包括内联样式、CSS 类绑定、动态样式以及使用第三方 UI 库。以下是几种常见的实现方法。 内联样式绑定 使用 Vue 的…

vue实现ai

vue实现ai

Vue 实现 AI 功能 Vue.js 可以通过集成第三方 AI 服务或本地 AI 模型来实现 AI 功能。以下是几种常见的方法: 集成第三方 AI API 使用 Vue 调用如 OpenAI、G…

vue实现triger

vue实现triger

在Vue中实现触发器(trigger)功能通常涉及自定义事件或DOM事件触发。以下是几种常见场景的实现方法: 自定义事件触发 通过$emit方法触发父组件中监听的自定义事件: // 子组件 thi…