当前位置:首页 > uni-app

uniapp搜索框组件

2026-03-05 11:28:44uni-app

uniapp 搜索框组件实现方法

在 uniapp 中实现搜索框功能,可以通过内置组件或第三方插件完成。以下是几种常见的实现方式:

使用 uni-ui 的 SearchBar 组件

uni-ui 提供了现成的搜索框组件,安装后可直接使用。在 pages.json 中配置:

{
  "easycom": {
    "autoscan": true,
    "custom": {
      "^uni-(.*)": "@dcloudio/uni-ui/lib/uni-$1/uni-$1.vue"
    }
  }
}

页面中使用示例:

<template>
  <uni-search-bar 
    placeholder="请输入搜索内容" 
    @confirm="search" 
    @input="input"
    @cancel="cancel">
  </uni-search-bar>
</template>

自定义搜索框组件

通过组合 view 和 input 元素实现自定义搜索框:

<template>
  <view class="search-box">
    <input 
      class="search-input" 
      placeholder="搜索" 
      v-model="keyword"
      @confirm="handleSearch"
      @input="handleInput"/>
    <button @click="handleSearch">搜索</button>
  </view>
</template>

样式示例:

.search-box {
  display: flex;
  padding: 10px;
  background: #f5f5f5;
}
.search-input {
  flex: 1;
  height: 36px;
  padding: 0 10px;
  background: #fff;
  border-radius: 4px;
}

使用第三方插件

uView UI 等第三方组件库也提供搜索框组件:

<template>
  <u-search 
    placeholder="请输入关键字" 
    v-model="keyword"
    :show-action="true"
    @search="onSearch"
    @custom="onCustom">
  </u-search>
</template>

搜索功能实现要点

防抖处理 高频输入场景建议使用防抖函数:

let timer = null
function handleInput(e) {
  clearTimeout(timer)
  timer = setTimeout(() => {
    this.searchApi(e.detail.value)
  }, 500)
}

搜索历史记录 本地存储搜索记录示例:

function saveSearchHistory(keyword) {
  let history = uni.getStorageSync('searchHistory') || []
  history.unshift(keyword)
  history = [...new Set(history)].slice(0, 10)
  uni.setStorageSync('searchHistory', history)
}

接口调用 结合后端API实现搜索:

uniapp搜索框组件

async function searchApi(keyword) {
  try {
    const res = await uni.request({
      url: '/api/search',
      data: { keyword }
    })
    this.resultList = res.data
  } catch (e) {
    console.error(e)
  }
}

平台适配注意事项

  • iOS平台需注意软键盘的"搜索"按钮事件
  • 安卓平台需处理返回键关闭搜索页面的逻辑
  • 小程序平台需注意输入框聚焦状态样式
  • H5平台需考虑回车键触发搜索

通过以上方法可以快速在 uniapp 项目中实现功能完善的搜索框组件,根据实际需求选择适合的实现方案。

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

相关文章

vue实现拖拽实现组件嵌套

vue实现拖拽实现组件嵌套

Vue 拖拽实现组件嵌套 使用 Vue 实现拖拽组件嵌套功能可以通过原生 HTML5 拖拽 API 或第三方库如 vuedraggable 实现。以下是两种方法的详细说明: 使用 HTML5 拖拽…

vue实现多级组件

vue实现多级组件

Vue 多级组件实现方法 在 Vue 中实现多级组件通常涉及父子组件通信、动态组件或递归组件等技术。以下是几种常见实现方式: 父子组件嵌套 通过逐层嵌套组件实现多级结构,适用于固定层级场景: &l…

uniapp支付功能怎么实现

uniapp支付功能怎么实现

uniapp支付功能实现方法 准备工作 注册微信支付、支付宝等平台的开发者账号,获取必要的商户ID(mch_id)、API密钥(key)、应用ID(appid)等信息。确保项目已配置好相关支付SDK。…

海康 uniapp

海康 uniapp

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

uniapp 用法

uniapp 用法

uniapp 基本概念 uniapp 是一个基于 Vue.js 的跨平台开发框架,支持编译到 iOS、Android、H5 及小程序等多端。其核心特点是“一次开发,多端发布”,通过条件编译实现平台差异…

uniapp 摇杆

uniapp 摇杆

uniapp 实现虚拟摇杆的方法 在uniapp中实现虚拟摇杆功能,通常需要结合canvas绘制和触摸事件监听。以下是具体实现方案: 基础摇杆实现 创建canvas画布 在template中添加c…