当前位置:首页 > 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 中集成极光推送,需要使用官方提供的插件或自行封装原生模块。以下是具体实现方式: 使用官方插件 在 uni-app 插件市场搜索「极光推送」插件,…

uniapp切片

uniapp切片

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

uniapp可以用vant吗

uniapp可以用vant吗

uniapp中使用Vant组件库的可行性 Vant是专为Vue.js设计的移动端组件库,而uniapp是一个跨平台开发框架。两者并非原生兼容,但可通过以下方式实现部分Vant组件的使用。 方法一:使…

uniapp特性

uniapp特性

uniapp的核心特性 跨平台开发 uniapp支持一套代码编译到多个平台,包括iOS、Android、H5、微信小程序、支付宝小程序、百度小程序、字节跳动小程序等。开发者无需为不同平台单独编写代码。…

海康 uniapp

海康 uniapp

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

uniapp $on

uniapp $on

uniapp $on 方法详解 $on 是 UniApp 中用于监听全局事件的 API,常用于跨页面或跨组件通信。它基于 Vue 的事件机制,允许在全局范围内触发和监听自定义事件。 基本语法 uni…