当前位置:首页 > 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>中定义搜索方法和数据绑定:

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 = [];
    }
  }
}

优化搜索性能

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

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调整搜索框外观:

uniapp搜索框功能

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

注意事项

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

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

相关文章

uniapp改变checkbox选中状态

uniapp改变checkbox选中状态

修改 checkbox 选中状态的方法 在 uniapp 中修改 checkbox 的选中状态可以通过以下几种方式实现: 绑定 v-model 控制状态 通过数据绑定方式控制 checkbox 的…

uniapp指南

uniapp指南

开发环境搭建 下载HBuilderX作为官方推荐的开发工具,支持Windows和Mac系统。安装后创建uni-app项目,选择模板(如默认模板、Hello Uni-app等)。确保Node.js版本在…

原生实现vue功能

原生实现vue功能

原生 JavaScript 实现 Vue 核心功能 使用原生 JavaScript 模拟 Vue 的核心功能(如数据绑定、虚拟 DOM、响应式更新等),可以通过以下方式实现: 数据响应式系统 通过…

vue实现后台功能

vue实现后台功能

Vue 实现后台功能的方法 Vue.js 是一个流行的前端框架,适合构建后台管理系统。以下是实现后台功能的常见方法和步骤。 项目初始化 使用 Vue CLI 或 Vite 初始化项目: # Vue…

uniapp 服务文件

uniapp 服务文件

uniapp 服务文件的概念 在 uniapp 中,服务文件通常指用于封装业务逻辑、接口请求或通用功能的 JavaScript 文件。这类文件通常存放在项目的 common 或 utils 目录下,便…

vue实现轨道功能

vue实现轨道功能

Vue 实现轨道功能的方法 轨道功能通常指在界面中实现元素沿特定路径移动的效果,例如进度条、时间轴或动画轨迹。以下是几种常见的实现方式: 使用 CSS 动画与 Vue 结合 通过 Vue 动态绑定样…