当前位置:首页 > uni-app

uniapp 搜索

2026-03-04 20:21:59uni-app

uniapp 搜索功能实现方法

在 uniapp 中实现搜索功能可以通过多种方式,包括本地搜索和远程搜索。以下是几种常见的实现方法:

本地搜索 使用 uniapp 的 filter 方法或 computed 属性对本地数据进行筛选。适用于数据量较小的场景。

<template>
  <view>
    <input v-model="searchText" placeholder="请输入搜索内容" />
    <view v-for="item in filteredList" :key="item.id">
      {{ item.name }}
    </view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      searchText: '',
      list: [
        { id: 1, name: '苹果' },
        { id: 2, name: '香蕉' },
        { id: 3, name: '橙子' }
      ]
    }
  },
  computed: {
    filteredList() {
      return this.list.filter(item => {
        return item.name.includes(this.searchText)
      })
    }
  }
}
</script>

远程搜索 通过调用接口实现搜索功能,适用于数据量较大的场景。

<script>
export default {
  data() {
    return {
      searchText: '',
      resultList: []
    }
  },
  methods: {
    async search() {
      const res = await uni.request({
        url: 'https://example.com/api/search',
        data: {
          keyword: this.searchText
        }
      })
      this.resultList = res.data
    }
  }
}
</script>

防抖优化 对于远程搜索,可以使用防抖函数减少请求次数。

<script>
export default {
  data() {
    return {
      timer: null,
      searchText: '',
      resultList: []
    }
  },
  watch: {
    searchText(val) {
      clearTimeout(this.timer)
      this.timer = setTimeout(() => {
        this.search()
      }, 500)
    }
  },
  methods: {
    async search() {
      const res = await uni.request({
        url: 'https://example.com/api/search',
        data: {
          keyword: this.searchText
        }
      })
      this.resultList = res.data
    }
  }
}
</script>

搜索历史记录 可以结合本地存储实现搜索历史记录功能。

uniapp 搜索

<script>
export default {
  data() {
    return {
      searchText: '',
      historyList: []
    }
  },
  onLoad() {
    this.historyList = uni.getStorageSync('searchHistory') || []
  },
  methods: {
    search() {
      if (!this.searchText) return
      this.historyList.unshift(this.searchText)
      uni.setStorageSync('searchHistory', this.historyList)
      // 执行搜索逻辑
    }
  }
}
</script>

注意事项

  • 对于大量数据搜索,建议使用分页加载
  • 移动端搜索框建议添加防抖或节流功能
  • 搜索结果为空时,应显示友好的提示信息
  • 搜索功能应考虑网络异常情况的处理

标签: uniapp
分享给朋友:

相关文章

uniapp模板库

uniapp模板库

uniapp模板库推荐 官方模板库 uni-app官方提供多个模板,涵盖电商、社交、新闻等多个领域。这些模板可直接在HBuilderX中通过新建项目选择,包含基础结构和常用功能模块,适合快速启动项目。…

uniapp实现懒加载

uniapp实现懒加载

uniapp实现懒加载的方法 在uniapp中实现懒加载可以通过多种方式,以下是几种常见的方法: 使用uni.lazyLoad组件 uniapp提供了内置的懒加载组件,适用于图片等资源的懒加载。在页…

uniapp设置title

uniapp设置title

设置页面标题的方法 在UniApp中设置页面标题可以通过以下几种方式实现,适用于不同场景和需求。 通过pages.json配置 在pages.json文件中,可以为每个页面单独配置导航栏标题。找到对…

uniapp 美颜

uniapp 美颜

uniapp 美颜实现方法 在uniapp中实现美颜功能可以通过多种方式完成,以下是一些常见的方法: 使用原生插件 uniapp支持调用原生插件实现美颜效果,适用于对性能要求较高的场景。需要开发原生…

uniapp yuv

uniapp yuv

YUV 格式在 UniApp 中的应用 在 UniApp 中处理 YUV 格式数据通常涉及视频编解码、图像处理或摄像头数据采集。YUV 是一种颜色编码系统,常用于视频传输和图像处理,与 RGB 格式相…

投票 uniapp

投票 uniapp

uniapp 投票功能实现 uniapp 是一个基于 Vue.js 的跨平台开发框架,可以用于开发微信小程序、H5、App 等多种应用。实现投票功能需要结合前端界面和后端数据处理。 前端界面设计 使…