当前位置:首页 > 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部署到服务器

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

uniapp请求超时处理

uniapp请求超时处理

uniapp请求超时处理方法 在uniapp中处理请求超时可以通过多种方式实现,以下是几种常见的处理策略: 设置全局请求超时时间 在main.js中配置全局请求超时时间,适用于所有请求: uni…

uniapp接入

uniapp接入

接入UniApp的基本流程 UniApp是一个基于Vue.js的跨平台开发框架,支持一次开发,多端发布。以下是接入UniApp的基本流程: 环境准备 确保已安装Node.js(建议版本12+)和HB…

uniapp图文

uniapp图文

图文混排实现方式 在uniapp中实现图文混排通常采用<rich-text>组件或自定义样式布局。<rich-text>支持解析HTML字符串,适合动态内容渲染。 <te…

uniapp 录像

uniapp 录像

uniapp 录像功能实现 在uniapp中实现录像功能可以通过调用uni-app的API或结合第三方插件完成。以下是常见的实现方法: 使用uni.chooseVideo方法 uni.choose…

uniapp 编辑

uniapp 编辑

uniapp 编辑功能实现方法 在uniapp中实现编辑功能通常涉及表单处理、数据绑定和状态管理。以下为常见实现方式: 表单数据双向绑定 使用v-model指令实现表单元素与数据的双向绑定: &l…