当前位置:首页 > uni-app

uniapp 搜索

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

uniapp 搜索功能实现方法

在 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 请求后端数据进行搜索。

uniapp 搜索

<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 可以快速实现搜索栏功能。

<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 常用样式库推荐 uView UI uView 是专为 uniapp 设计的多端兼容 UI 框架,提供丰富的组件和工具类。支持 Vue3 组合式 API,内置主题定制功能,常用于快速构建企…

uniapp请求超时处理

uniapp请求超时处理

uniapp请求超时处理方法 在uniapp中处理请求超时可以通过多种方式实现,以下是几种常见的处理策略: 设置全局请求超时时间 在main.js中配置全局请求超时时间,适用于所有请求: uni…

uniapp安装uview

uniapp安装uview

安装uView到UniApp项目 方法一:通过npm安装(推荐) 确保项目已初始化npm,在项目根目录执行以下命令: npm install uview-ui 在main.js文件中引入并注册uV…

uniapp前端页面

uniapp前端页面

Uniapp 前端页面开发指南 Uniapp 是一个基于 Vue.js 的跨平台开发框架,支持一次开发,多端部署(H5、小程序、App等)。以下是开发 Uniapp 前端页面的关键方法和注意事项。…

uniapp关闭侧滑

uniapp关闭侧滑

禁用全局侧滑返回功能 在pages.json中配置全局禁止侧滑返回: { "globalStyle": { "popGesture": "none" } } 禁用单个页面侧滑…

海康 uniapp

海康 uniapp

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