当前位置:首页 > uni-app

uniapp 搜索

2026-01-13 20:32:38uni-app

uniapp 搜索功能实现方法

全局搜索组件集成

pages.json中配置全局搜索栏,适用于所有页面顶部显示搜索框。示例代码:

"globalStyle": {
  "navigationBarTextStyle": "black",
  "navigationBarTitleText": "uni-app",
  "navigationBarBackgroundColor": "#F8F8F8",
  "backgroundColor": "#F8F8F8",
  "app-plus": {
    "titleNView": {
      "searchInput": {
        "align": "center",
        "backgroundColor": "#fff",
        "borderRadius": "12px",
        "placeholder": "请输入搜索内容",
        "disabled": false
      }
    }
  }
}

页面级搜索框实现

使用uni-search-bar组件实现单页面搜索功能,支持实时搜索和取消操作:

<template>
  <view>
    <uni-search-bar 
      @confirm="search" 
      @input="input" 
      @cancel="cancel"
      placeholder="商品搜索">
    </uni-search-bar>
  </view>
</template>

搜索逻辑处理

通过@input事件实现实时搜索建议,使用防抖函数优化性能:

let timer = null
methods: {
  input(e) {
    clearTimeout(timer)
    timer = setTimeout(() => {
      this.getSuggestions(e)
    }, 500)
  },
  getSuggestions(keyword) {
    uni.request({
      url: 'https://api.example.com/search',
      data: { keyword },
      success: (res) => {
        this.suggestions = res.data.list
      }
    })
  }
}

历史记录存储

使用uni.setStorageSync保存搜索历史,并支持本地缓存管理:

saveHistory(keyword) {
  let histories = uni.getStorageSync('searchHistory') || []
  if (!histories.includes(keyword)) {
    histories.unshift(keyword)
    uni.setStorageSync('searchHistory', histories.slice(0, 10))
  }
}

搜索结果页设计

建议采用分页加载模式,结合uni-load-more组件实现无限滚动:

<scroll-view 
  scroll-y 
  @scrolltolower="loadMore"
  style="height: calc(100vh - 100px)">
  <view v-for="item in list" :key="item.id">
    <!-- 结果项内容 -->
  </view>
  <uni-load-more :status="loadingStatus"></uni-load-more>
</scroll-view>

多端适配方案

通过条件编译处理各平台差异:

// #ifdef APP-PLUS
this.adjustSearchBarPosition()
// #endif
// #ifdef H5
this.initH5SearchEvent()
// #endif

uniapp 搜索

标签: uniapp
分享给朋友:

相关文章

uniapp开发

uniapp开发

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

uniapp 推送

uniapp 推送

uniapp 推送实现方法 uniapp 推送功能可以通过多种方式实现,主要包括使用第三方推送服务、原生插件或云服务。以下是几种常见的实现方案: 使用 UniPush 服务 UniPush 是 D…

uniapp消息推送

uniapp消息推送

uniapp消息推送实现方法 uniapp支持多种消息推送方式,包括uniPush、个推、极光推送等。以下为常见实现方案: uniPush(官方推荐) uniapp官方提供的推送服务,基于DClo…

uniapp删除

uniapp删除

卸载 uniapp 项目依赖 在项目根目录下执行以下命令,移除 node_modules 和依赖锁文件: rm -rf node_modules package-lock.json 如需清理全局…

uniapp 消息推送

uniapp 消息推送

uniapp 消息推送实现方法 使用uniPush服务 uniapp官方提供了uniPush服务,支持iOS、Android及小程序平台的消息推送。需要在manifest.json中配置推送模块,并按…

uniapp倒计时

uniapp倒计时

uniapp倒计时的实现方法 在uniapp中实现倒计时功能可以通过多种方式完成,以下是几种常见的实现方法: 使用setInterval实现基础倒计时 通过JavaScript的setInterv…