当前位置:首页 > 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>

多条件筛选实现

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

uniapp搜索筛选

<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保存用户偏好

uniapp搜索筛选

// 保存筛选条件
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)
  }
}

后端接口整合

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

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

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

标签: uniapp
分享给朋友:

相关文章

uniapp实名认证

uniapp实名认证

uniapp实名认证实现方法 使用uniCloud实名认证插件 uniapp官方提供了uniCloud的实名认证插件,可快速集成到项目中。插件支持身份证识别、活体检测等功能,需在uniCloud控制台…

uniapp树形选择

uniapp树形选择

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

uniapp开发电视应用

uniapp开发电视应用

开发环境准备 确保已安装HBuilderX最新版本,这是uniapp官方推荐的开发工具。安装Node.js环境,用于依赖管理和打包构建。准备Android Studio或Xcode用于调试和打包TV应…

uniapp设置背景

uniapp设置背景

设置全局背景样式 在App.vue文件中添加全局样式,使用page选择器设置页面背景。这种方式会影响所有页面背景。 <style> page { background-color:…

uniapp如何赋值

uniapp如何赋值

uniapp 赋值方法 在 uniapp 中,赋值操作可以通过多种方式实现,具体取决于数据类型和场景。 数据绑定赋值 在模板中使用 {{}} 进行数据绑定,通过修改 data 中的值实现动态更新。…

uniapp可以用vant吗

uniapp可以用vant吗

uniapp中使用Vant组件库的可行性 Vant是专为Vue.js设计的移动端组件库,而uniapp是一个跨平台开发框架。两者并非原生兼容,但可通过以下方式实现部分Vant组件的使用。 方法一:使…