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

uniapp指南

uniapp指南

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

uniapp get

uniapp get

uniapp 获取数据的方法 在 uniapp 中获取数据可以通过多种方式实现,包括 API 请求、本地存储、页面传参等。以下是一些常见的方法: API 请求获取数据 使用 uni.request…

投票 uniapp

投票 uniapp

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

介绍uniapp

介绍uniapp

Uniapp 概述 Uniapp 是一款基于 Vue.js 的跨平台开发框架,允许开发者使用一套代码同时生成 iOS、Android、Web 以及小程序应用。其核心优势在于高效开发和代码复用,大幅降低…

uniapp 摇骰子

uniapp 摇骰子

uniapp 摇骰子实现方法 页面布局 在 pages 目录下创建骰子页面(如 dice.vue),使用 view 和 image 组件构建骰子界面。骰子图片可通过静态资源或网络地址加载。…