当前位置:首页 > uni-app

uniapp搜索框功能

2026-02-06 14:15:23uni-app

实现搜索框的基本结构

pages/index/index.vue中创建基础搜索框组件,使用<uni-search-bar>或自定义输入框:

<template>
  <view>
    <uni-search-bar 
      v-model="searchText" 
      placeholder="请输入关键词" 
      @confirm="handleSearch"
      @cancel="handleCancel"
    />
    <!-- 搜索结果列表 -->
    <view v-if="searchResults.length">
      <view v-for="(item,index) in searchResults" :key="index">
        {{ item.name }}
      </view>
    </view>
  </view>
</template>

处理搜索逻辑

<script>中定义搜索方法和数据绑定:

uniapp搜索框功能

export default {
  data() {
    return {
      searchText: '',
      searchResults: []
    }
  },
  methods: {
    handleSearch() {
      // 调用API或本地数据过滤
      this.searchResults = this.mockData.filter(item => 
        item.name.includes(this.searchText)
      );
    },
    handleCancel() {
      this.searchText = '';
      this.searchResults = [];
    }
  }
}

优化搜索性能

添加防抖函数避免频繁触发搜索:

uniapp搜索框功能

import { debounce } from '@/common/utils.js';

methods: {
  handleSearch: debounce(function() {
    // 实际项目中替换为API请求
    uni.request({
      url: '/api/search',
      data: { keyword: this.searchText },
      success: (res) => {
        this.searchResults = res.data.list;
      }
    });
  }, 500)
}

本地历史记录功能

通过uni.setStorage保存搜索记录:

handleSearch() {
  const history = uni.getStorageSync('searchHistory') || [];
  if (!history.includes(this.searchText)) {
    history.unshift(this.searchText);
    uni.setStorageSync('searchHistory', history.slice(0, 10));
  }
}

样式自定义

通过CSS调整搜索框外观:

/* 修改uni-search-bar默认样式 */
/deep/ .uni-searchbar {
  background-color: #f8f8f8;
}
/deep/ .uni-searchbar__box {
  border-radius: 20px;
}

注意事项

  • 真机测试时需处理键盘收起事件(@blur
  • 列表数据量大时建议使用<scroll-view>包裹
  • 安卓端需注意输入框聚焦时页面顶起问题,可通过manifest.json配置调整窗口样式

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

相关文章

vue电影功能实现

vue电影功能实现

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

vue实现功能插件

vue实现功能插件

Vue 插件实现方法 Vue 插件通常用于封装全局功能(如指令、过滤器、混入等),以下是实现 Vue 插件的典型方式: 插件基本结构 const MyPlugin = { install(…

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

uniapp和vue有什么区别

uniapp和vue有什么区别

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

uniapp树形选择

uniapp树形选择

uniapp树形选择实现方法 使用uni-data-checkbox组件 uniapp内置的uni-data-checkbox组件支持树形结构选择,适用于多级分类场景。配置时需要将数据格式化为树形结构…

uniapp支付功能怎么实现

uniapp支付功能怎么实现

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