当前位置:首页 > VUE

vue实现搜索组件

2026-01-17 09:53:58VUE

Vue 实现搜索组件的方法

基础搜索组件实现

创建基础搜索组件需要包含输入框和搜索按钮。在Vue中可以使用v-model绑定输入值,通过@click@keyup.enter触发搜索。

<template>
  <div class="search-container">
    <input 
      v-model="searchQuery" 
      @keyup.enter="handleSearch" 
      placeholder="输入搜索内容"
    />
    <button @click="handleSearch">搜索</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      searchQuery: ''
    }
  },
  methods: {
    handleSearch() {
      this.$emit('search', this.searchQuery)
    }
  }
}
</script>

防抖优化

频繁触发搜索会影响性能,可以使用防抖技术优化。Lodash的debounce方法或自定义实现均可。

vue实现搜索组件

<script>
import { debounce } from 'lodash'

export default {
  data() {
    return {
      searchQuery: ''
    }
  },
  created() {
    this.debouncedSearch = debounce(this.handleSearch, 500)
  },
  methods: {
    handleSearch() {
      this.$emit('search', this.searchQuery)
    }
  }
}
</script>

异步搜索实现

对于需要API请求的搜索,可以使用async/await处理异步操作。

<script>
export default {
  methods: {
    async handleSearch() {
      try {
        const results = await api.search(this.searchQuery)
        this.$emit('results', results)
      } catch (error) {
        console.error('搜索失败:', error)
      }
    }
  }
}
</script>

搜索结果展示

搜索结果通常以列表形式展示,可以使用v-for渲染。

vue实现搜索组件

<template>
  <div>
    <search-component @search="handleSearch" />
    <ul v-if="results.length">
      <li v-for="item in results" :key="item.id">
        {{ item.title }}
      </li>
    </ul>
    <p v-else>暂无结果</p>
  </div>
</template>

样式优化

添加CSS样式提升用户体验,如加载状态、空状态等。

.search-container {
  display: flex;
  gap: 10px;
}

.loading {
  opacity: 0.6;
  cursor: not-allowed;
}

组件参数化

通过props使组件更灵活,可配置placeholder、按钮文本等。

<script>
export default {
  props: {
    placeholder: {
      type: String,
      default: '搜索...'
    },
    buttonText: {
      type: String,
      default: '搜索'
    }
  }
}
</script>

标签: 组件vue
分享给朋友:

相关文章

实现.vue文件

实现.vue文件

创建.vue文件的基本结构 一个标准的.vue文件包含三个部分:模板(template)、脚本(script)和样式(style)。这种结构允许开发者在一个文件中管理组件的HTML、JavaScrip…

vue实现数组

vue实现数组

Vue 实现数组操作的方法 在 Vue 中,数组的操作需要特别注意响应式的问题。Vue 提供了一些方法来确保数组的变动能够触发视图更新。 响应式数组方法 Vue 对以下数组方法进行了封装,确保它们能…

vue实现ios

vue实现ios

Vue 实现 iOS 风格应用 使用 Vue 实现 iOS 风格的应用,可以通过结合 UI 框架和自定义样式来达成目标。以下是具体方法和步骤: 选择 iOS 风格的 UI 框架 Vue 生态中有多…

vue实现横滚

vue实现横滚

Vue 实现横滚效果 横滚效果通常指水平滚动内容,常见于轮播图、横向导航栏等场景。以下是几种实现方式: 使用 CSS 和 Vue 结合 通过 CSS 的 overflow-x 和 white-spa…

vue实现抽屉

vue实现抽屉

Vue 实现抽屉组件 抽屉组件是一种常见的 UI 模式,通常用于从屏幕边缘滑出内容。以下是几种实现抽屉的方法: 使用 Vue 原生实现 创建一个基本的抽屉组件,利用 Vue 的过渡和条件渲染功能。…

vue实现座位

vue实现座位

Vue实现座位布局 使用Vue实现座位布局可以通过组件化和响应式数据管理来简化开发流程。以下是一个完整的实现方案: 数据准备 定义座位数据结构,通常使用二维数组表示行列关系: data() {…