当前位置: 首页 > news >正文

廊坊网站seo服务深圳市光明区官网

廊坊网站seo服务,深圳市光明区官网,比较出名的设计网站,新冠怎么突然不见了在小程序中,搜索功能是非常常见的需求。今天分享一个搜索页的实现逻辑,包含 搜索输入、历史记录、热门搜索、分页加载、无数据处理 等核心功能一、页面结构设计页面主要分为以下几个部分:1.搜索框:输入关键字,支持回车…

        在小程序中,搜索功能是非常常见的需求。今天分享一个搜索页的实现逻辑,包含 搜索输入、历史记录、热门搜索、分页加载、无数据处理 等核心功能


一、页面结构设计

        页面主要分为以下几个部分:

                1.搜索框:输入关键字,支持回车触发搜索、清除、取消。

                2.历史搜索:存储用户输入过的搜索关键字。

                3.热门搜索:给用户推荐一些固定的搜索词。

                4.搜索结果列表:展示接口返回的数据。

                5.无数据提示:当搜索不到结果时展示空状态。

二、核心逻辑拆解

        1.搜索输入框

                当用户输入关键字并点击回车(confirm 事件)时,需要触发搜索逻辑。

                关键点

                1.先 trim 输入内容,避免全是空格。

                2.如果关键字为空,直接 return,不做请求。

               3. 把关键字加入 历史搜索数组,并保存到 localStorage

                4.重置参数对象 queryParams,重新发起请求。

const onSearch = () => {uni.showLoading()queryParams.value.keyword = queryParams.value.keyword.trim()if (!queryParams.value.keyword) {uni.hideLoading()return}// 去重 + 限制长度historySearch.value = [...new Set([...historySearch.value, queryParams.value.keyword])].slice(0,10)uni.setStorageSync("historySearch", historySearch.value)initParams(queryParams.value.keyword) // 重置参数searchData() // 发请求
}

        2.点击标签搜索

                无论是历史搜索还是热门搜索,点击后逻辑一样:

                把 tab 的值赋给 keyword

                触发搜索函数

const clickTab = (value) => {initParams(value)onSearch()
}

     3.请求数据

                发起请求时,把结果追加到 classList,并做以下判断:

        如果 res.data.length < pageSize,说明没有更多数据了,设置 noData = true

        如果返回数据为空并且当前列表也为空,说明完全没有结果,设置 noSearch = true

const searchData = async () => {try {let res = await apiSearchData(queryParams.value)classList.value = [...classList.value, ...res.data]uni.setStorageSync("storgClassList", classList.value)if (res.data.length < queryParams.value.pageSize) {noData.value = true}if (res.data.length === 0 && classList.value.length === 0) {noSearch.value = true}} finally {uni.hideLoading()}
}

    4.下拉触底加载更多

                小程序中可以用 onReachBottom 监听触底事件,实现分页加载:

onReachBottom(() => {if(noData.value) returnqueryParams.value.pageNum++searchData()
})

     5.初始化参数

        每次新搜索时,需要清空旧数据、重置状态:

const initParams = (value = "") => {classList.value = []noData.value = falsenoSearch.value = falsequeryParams.value = {pageNum: 1,pageSize: 12,keyword: value || "",}
}

三、无数据处理

        搜索结果可能有三种情况:

                1.正常有数据 → 渲染列表

                2.没有更多数据 → 底部显示 uni-load-more

                3.完全没有搜索结果 → 显示空状态图

<view class="noSearch" v-if="noSearch"><uv-empty mode="search" icon="http://cdn.uviewui.com/uview/empty/search.png"></uv-empty>
</view>

四、效果总结

        搜索逻辑清晰:输入 / 点击标签 → 重置参数 → 发请求

        用户体验优化:历史搜索、本地存储、热门搜索

        异常处理:无结果、没有更多

        这样一套逻辑,可以完整覆盖大多数搜索需求。

效果图展示。

        

http://www.dtcms.com/a/593845.html

相关文章:

  • 大模型调用完全指南(含免费资源汇总)
  • 定义数组指针
  • 做搜狗手机网站点网站第三方统计工具
  • 专业钓场计时计费管理系统:提升运营效率的智能化解决方案
  • 如何做一个与博物馆相关网站卡板技术支持 东莞网站建设
  • 北大软件外事管理系统:以“制度+技术”,筑牢外事管理 数字化屏障
  • wordpress怎么连接主机名aso如何优化
  • PDF文件内容出现重叠现象解析
  • 织梦系统怎么做网站个人网站备案信息填写
  • 基于AutoDL远端服务复现具身智能论文OpenVLA
  • 新能源汽车减速器行星齿轮机构资料整理
  • 网站建设哈尔滨网站建设1企业网站策划书制作
  • 53_AI智能体运维部署之集成Prometheus监控系统:构建可观测的AI应用基础设施
  • 福建平潭建设局网站室内设计师经常用的网站
  • 政务配发移动设备管理解决方案
  • 【CCF-CSP】第三次认证03-02 Z字形扫描
  • 西柏坡旅游网站建设规划书企业网站 cms
  • πRL——首个在线RL微调流式VLA π0/π0.5的框架:通过Flow-Noise和Flow-SDE实现精确对数似然估计,全面提升性能
  • 求n以内自守数个数
  • 找做金融的网站有哪些深圳建设集团招标
  • Java大厂面试真题:从Spring Boot到AI微服务的三轮技术拷问(一)
  • 如何解决 “Error parsing JSON: invalid character ‘<’ looking for beginning of value”
  • 一个网站如何挣钱seo平台优化服务
  • 丽水市城市建设投资有限责任公司网站注册公司在哪核名
  • 深度学习:从零开始手搓一个浅层神经网络(Single Hidden Layer Neural Network)
  • 网站开发 犯法公司起名在线生成器
  • 免费.网站最新域名保定市建设局网站
  • React + TypeScript 笔试题库
  • SpringBoot项目如何使用Log4j2+SLF4J构建日志
  • AI Agent开发实战:基于ReAct范式的智能体构建与优化