当前位置:首页 > uni-app

uniapp 搜索

2026-02-05 18:43:04uni-app

uniapp 搜索功能实现方法

在 uniapp 中实现搜索功能可以通过多种方式,包括前端本地搜索、调用接口进行远程搜索、使用第三方插件等。以下是几种常见的实现方案:

前端本地搜索

适用于数据量较小的情况,直接在前端进行过滤操作。

<template>
  <view>
    <input v-model="keyword" placeholder="请输入搜索关键词" />
    <view v-for="(item, index) in filteredList" :key="index">
      {{ item.name }}
    </view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      keyword: '',
      list: [
        { name: '苹果' },
        { name: '香蕉' },
        { name: '橙子' }
      ]
    }
  },
  computed: {
    filteredList() {
      return this.list.filter(item => 
        item.name.includes(this.keyword)
      )
    }
  }
}
</script>

调用接口远程搜索

适用于数据量较大的情况,通过 API 请求后端数据进行搜索。

<template>
  <view>
    <input v-model="keyword" @input="handleSearch" placeholder="请输入搜索关键词" />
    <view v-for="(item, index) in searchResult" :key="index">
      {{ item.name }}
    </view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      keyword: '',
      searchResult: []
    }
  },
  methods: {
    async handleSearch() {
      if (!this.keyword.trim()) {
        this.searchResult = []
        return
      }
      const res = await uni.request({
        url: 'https://example.com/api/search',
        data: { keyword: this.keyword }
      })
      this.searchResult = res.data.list
    }
  }
}
</script>

使用 uniCloud 云开发

如果项目使用 uniCloud,可以直接调用云函数进行搜索。

<template>
  <view>
    <input v-model="keyword" @input="searchFromCloud" placeholder="请输入搜索关键词" />
    <view v-for="(item, index) in cloudData" :key="index">
      {{ item.name }}
    </view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      keyword: '',
      cloudData: []
    }
  },
  methods: {
    async searchFromCloud() {
      const res = await uniCloud.callFunction({
        name: 'search',
        data: { keyword: this.keyword }
      })
      this.cloudData = res.result.data
    }
  }
}
</script>

使用第三方搜索插件

一些第三方插件如 uni-search-bar 可以快速实现搜索栏功能。

uniapp 搜索

<template>
  <view>
    <uni-search-bar @confirm="search" placeholder="搜索"></uni-search-bar>
    <view v-for="(item, index) in resultList" :key="index">
      {{ item.title }}
    </view>
  </view>
</template>

<script>
import uniSearchBar from '@/components/uni-search-bar/uni-search-bar.vue'
export default {
  components: { uniSearchBar },
  data() {
    return {
      resultList: []
    }
  },
  methods: {
    search(e) {
      console.log(e.value)
      // 调用搜索逻辑
    }
  }
}
</script>

搜索优化建议

  • 防抖处理:避免频繁触发搜索请求,可以使用 lodash.debounce 或自定义防抖函数。
  • 模糊搜索:使用正则表达式或字符串匹配实现更灵活的搜索逻辑。
  • 历史记录:存储用户的搜索历史,提升用户体验。
  • 高亮关键词:在搜索结果中高亮匹配的关键词,便于用户快速定位。

以上方法可以根据实际需求选择或组合使用,以实现高效的搜索功能。

标签: uniapp
分享给朋友:

相关文章

uniapp开发

uniapp开发

uniapp开发简介 uniapp是一款基于Vue.js的跨平台开发框架,支持一次开发,多端部署。开发者可以通过编写一套代码,发布到iOS、Android、Web以及各种小程序平台(如微信、支付宝、百…

uniapp教程

uniapp教程

uniapp 基础介绍 uniapp 是一个基于 Vue.js 的跨平台开发框架,支持一次开发,多端发布(如微信小程序、H5、App、快应用等)。其核心优势在于代码复用率高,学习成本低,适合快速构建多…

uniapp切片

uniapp切片

uniapp 切片实现方法 在 uniapp 中实现切片功能通常指的是对图片或数据进行分割处理。以下是几种常见的切片实现方式: 图片切片展示 通过 CSS 和 JavaScript 实现图片的网格化…

海康 uniapp

海康 uniapp

海康威视与UniApp集成方案 海康威视的硬件设备(如摄像头、NVR等)与UniApp结合,通常需要通过海康的开放平台API或SDK实现功能调用。以下是具体实现方法: 获取海康威视开放平台权限 注册…

uniapp 滑动

uniapp 滑动

uniapp 实现滑动效果的方法 在uniapp中实现滑动效果可以通过多种方式,包括使用内置组件、CSS动画或第三方插件。以下是几种常见的方法: 使用scroll-view组件 scroll-vi…

uniapp招聘开源

uniapp招聘开源

uniapp招聘开源项目推荐 以下是一些基于uniapp的开源招聘类项目,适合开发者参考或二次开发: DCloud招聘模板 官方提供的招聘类应用模板,包含职位列表、详情、投递等功能。 支持多端发布…