当前位置:首页 > uni-app

uniapp搜索框功能

2026-03-05 16:10:37uni-app

uniapp 搜索框功能实现

在 uniapp 中实现搜索框功能可以通过多种方式完成,以下是一些常见的方法和示例代码:

基础搜索框实现

使用 uni-easyinput 组件或原生 input 元素结合搜索按钮:

<template>
  <view>
    <uni-easyinput 
      v-model="searchText" 
      placeholder="请输入搜索内容" 
      @confirm="handleSearch"
    >
      <template #right>
        <button @click="handleSearch">搜索</button>
      </template>
    </uni-easyinput>
  </view>
</template>

<script>
export default {
  data() {
    return {
      searchText: ''
    }
  },
  methods: {
    handleSearch() {
      uni.showToast({
        title: '搜索:' + this.searchText,
        icon: 'none'
      })
      // 实际搜索逻辑
    }
  }
}
</script>

防抖优化

对于频繁触发的搜索(如实时搜索),建议添加防抖处理:

let timer = null
methods: {
  handleSearch() {
    clearTimeout(timer)
    timer = setTimeout(() => {
      this.performSearch()
    }, 500)
  },
  performSearch() {
    // 实际搜索逻辑
  }
}

搜索历史记录

添加搜索历史存储功能:

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

接口请求示例

结合后端接口的搜索实现:

async performSearch() {
  try {
    const res = await uni.request({
      url: 'https://api.example.com/search',
      data: {
        keyword: this.searchText
      }
    })
    // 处理返回结果
  } catch (error) {
    uni.showToast({
      title: '搜索失败',
      icon: 'none'
    })
  }
}

样式自定义

通过 CSS 自定义搜索框样式:

uniapp搜索框功能

.custom-search {
  display: flex;
  padding: 10px;
  background-color: #f5f5f5;
  border-radius: 20px;
}
.custom-search input {
  flex: 1;
  padding: 0 10px;
}

注意事项

  • 在微信小程序中,input 组件需要添加 confirm-type="search" 属性才能触发键盘的搜索按钮
  • 考虑添加 loading 状态提升用户体验
  • 对于复杂搜索条件,可以设计单独的搜索页面
  • 移动端注意软键盘的处理,可能需要手动控制收起

以上实现可以根据具体需求进行组合和扩展,uniapp 的跨平台特性保证了这些代码在多数平台都能正常运行。

标签: 功能uniapp
分享给朋友:

相关文章

vue电影功能实现

vue电影功能实现

Vue电影功能实现 数据获取与展示 使用Axios或Fetch API从电影API获取数据,例如TMDB或豆瓣API。在Vue组件的created或mounted生命周期钩子中发起请求,将返回的电影数…

uniapp和vue有什么区别

uniapp和vue有什么区别

uniapp和vue的区别 1. 定位与用途 Vue:一个渐进式JavaScript框架,专注于构建用户界面,适用于开发单页应用(SPA)或复杂前端项目。 UniApp:基于Vue.js的跨…

uniapp极光推送

uniapp极光推送

uniapp极光推送集成步骤 准备工作 注册极光推送开发者账号,创建应用获取AppKey。确保uniapp项目已配置好原生插件支持。 安装插件 在uniapp项目manifest.json文件中,选…

uniapp部署到服务器

uniapp部署到服务器

部署准备 确保本地开发环境已完成项目构建,生成静态文件(H5端为/dist/build/h5目录)。检查服务器环境是否安装Nginx/Apache等Web服务软件,并配置好域名解析。 上传文件 通过…

uniapp面试问啥

uniapp面试问啥

技术基础类问题 UniApp框架特性 跨端实现原理及条件编译的使用场景 如何理解"一次开发,多端运行"的优缺点 rpx与vw/vh单位的适配差异 Vue相关 生命周期在UniA…

uniapp实现标题栏渐变

uniapp实现标题栏渐变

实现标题栏渐变的方法 在UniApp中实现标题栏渐变效果,可以通过修改页面的导航栏样式或使用自定义导航栏来实现。以下是几种常见的方法: 方法一:使用原生导航栏渐变 通过修改pages.json中的…