当前位置:首页 > uni-app

uniapp搜索筛选

2026-02-05 22:50:15uni-app

uniapp 搜索筛选实现方法

基础搜索功能实现

pages目录下创建搜索页面,使用<uni-search-bar>组件实现输入框

<template>
  <view>
    <uni-search-bar @confirm="handleSearch" v-model="keyword"></uni-search-bar>
    <view v-for="item in filteredList" :key="item.id">
      {{ item.name }}
    </view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      keyword: '',
      originalList: [],
      filteredList: []
    }
  },
  methods: {
    handleSearch() {
      this.filteredList = this.originalList.filter(item => 
        item.name.includes(this.keyword)
      )
    }
  }
}
</script>

多条件筛选实现

添加多个筛选条件时,可以使用对象存储筛选参数

<template>
  <view>
    <uni-search-bar v-model="filterParams.keyword"></uni-search-bar>
    <picker @change="handleCategoryChange" :range="categories">
      <view>当前选择:{{categories[filterParams.category]}}</view>
    </picker>
    <button @click="applyFilters">筛选</button>
  </view>
</template>

<script>
export default {
  data() {
    return {
      filterParams: {
        keyword: '',
        category: 0,
        priceRange: [0, 100]
      },
      categories: ['全部', '电子产品', '服装']
    }
  },
  methods: {
    applyFilters() {
      this.filteredList = this.originalList.filter(item => {
        const matchKeyword = item.name.includes(this.filterParams.keyword)
        const matchCategory = this.filterParams.category === 0 || 
                            item.category === this.filterParams.category
        return matchKeyword && matchCategory
      })
    }
  }
}
</script>

本地存储优化

对于频繁使用的筛选条件,可以使用uni-app的存储API保存用户偏好

// 保存筛选条件
uni.setStorageSync('lastFilter', this.filterParams)

// 读取上次筛选条件
const lastFilter = uni.getStorageSync('lastFilter') || {}
this.filterParams = {...this.filterParams, ...lastFilter}

性能优化建议

大数据量时考虑分页加载和防抖处理

let timer = null
watch: {
  keyword(newVal) {
    clearTimeout(timer)
    timer = setTimeout(() => {
      this.handleSearch()
    }, 500)
  }
}

后端接口整合

当数据量较大时,建议将筛选逻辑放在后端

uniapp搜索筛选

async fetchFilteredData() {
  const res = await uni.request({
    url: '/api/products',
    data: this.filterParams
  })
  this.filteredList = res.data
}

以上方法可根据实际需求组合使用,构建完整的搜索筛选功能。注意根据项目实际情况调整数据结构和方法实现。

标签: uniapp
分享给朋友:

相关文章

base64转换方法uniapp

base64转换方法uniapp

Base64 转换方法(UniApp) 在 UniApp 中实现 Base64 编码和解码,可以通过原生 JavaScript 的 btoa 和 atob 方法,或使用第三方库如 base64-js。…

uniapp 目录

uniapp 目录

uniapp 目录结构 uniapp 的目录结构遵循 Vue.js 项目的规范,同时包含一些特有的文件和目录。以下是典型的 uniapp 项目目录结构及其说明: project-name/ ├──…

uniapp营销

uniapp营销

营销策略 采用社交媒体推广,结合微信、微博、抖音等平台进行内容营销。通过短视频、直播等形式展示产品特点,吸引用户关注。利用KOL合作,扩大品牌影响力,提高用户信任度。 用户裂变 设计裂变活动…

uniapp有用

uniapp有用

Uniapp 的优势 Uniapp 是一款基于 Vue.js 的跨平台开发框架,支持一次开发,多端发布,适用于 iOS、Android、Web、小程序等多个平台。其核心优势包括: 跨平台兼容…

uniapp工程

uniapp工程

uniapp工程简介 uniapp是一个基于Vue.js的跨平台开发框架,允许开发者使用一套代码同时生成iOS、Android、H5以及小程序应用。它通过条件编译和平台特性适配,实现多端兼容。 创建…

uniapp定位描述

uniapp定位描述

uniapp定位功能实现 uniapp提供了多种定位方式,包括H5、小程序和App端的定位功能。通过uni.getLocation方法可以获取设备当前位置信息。 基本定位方法 使用uni.getLo…