最近搜索与热门搜索双状态切换 前言“海风日记“的搜索页面有两种状态当搜索框为空时显示最近搜索和热门搜索当输入内容时显示搜索结果。这种双状态切换提供了流畅的搜索体验。本文将从源码出发深入讲解搜索状态的切换逻辑。一、双状态切换1.1 状态判断// 搜索框为空时显示最近搜索 热门搜索 if (this.searchText.length 0) { // 最近搜索 if (this.recentSearches.length 0) { ... } // 热门搜索 this.hotSearchSection() } // 搜索框有内容时显示搜索结果 if (this.searchText.length 0) { // 搜索结果 this.searchResultsSection() }1.2 完整逻辑Scroll() { Column({ space: 24 }) { // 状态 1搜索框为空 → 显示推荐 if (this.searchText.length 0) { // 最近搜索 if (this.recentSearches.length 0) { this.recentSearchSection() } // 热门搜索 this.hotSearchSection() } // 状态 2搜索框有内容 → 显示搜索结果 if (this.searchText.length 0) { if (this.searchResults.length 0) { this.emptyResultSection() } else { this.searchResultList() } } } }二、状态清理2.1 清除最近搜索Button() { SymbolGlyph($r(sys.symbol.trash)).fontSize(16).fontColor([COLOR_TEXT_HINT]) } .backgroundColor(transparent).width(32).height(32) .onClick(() { this.recentSearches [] })2.2 清除搜索内容Button() { SymbolGlyph($r(sys.symbol.xmark_circle_fill)).fontSize(16).fontColor([COLOR_TEXT_HINT]) } .backgroundColor(transparent).width(28).height(28) .onClick(() { this.searchText })三、搜索结果的空状态if (this.searchResults.length 0) { Column({ space: 12 }) { Text().fontSize(48).margin({ top: 60, bottom: 12 }) Text(没有找到相关内容).fontSize(15).fontColor(COLOR_TEXT_SECONDARY) Text(换个关键词试试吧).fontSize(13).fontColor(COLOR_TEXT_HINT) } .width(100%).alignItems(HorizontalAlign.Center) }四、常见问题4.1 状态切换闪烁问题搜索框内容变化时页面内容闪烁。原因条件渲染导致组件重新创建。解决方案使用visibility属性替代条件渲染。总结本文通过“海风日记“的搜索页面深入讲解了双状态切换的实现搜索框为空显示最近搜索 热门搜索搜索框有内容显示搜索结果状态清理清除最近搜索和搜索内容空结果无匹配内容时的提示下一篇文章将深入讲解Grid 3 列展示热门标签敬请期待。如果这篇文章对你有帮助欢迎点赞、收藏⭐、关注你的支持是我持续创作的动力相关资源TextInput 组件文档Scroll 组件文档海风日记项目源码[HarmonyOS 开发者官网](https://atomgit.com/openharmony/docs开源鸿蒙跨平台社区

相关新闻

最新新闻

点钻机设备选型技术指南:精度、供料、控制三大核心指标解析

点钻机设备选型技术指南:精度、供料、控制三大核心指标解析

从精度控制到维护成本,一套完整的设备评估框架一、引言在饰品加工、工艺品制作及电子封装领域,点钻机(或称点胶点钻一体机)正成为提升效率与一致性的关键设备。据行业调研数据,2023-2025年国内点胶点钻机市场规模年均复…

2026/7/19 12:42:02
C71x DSP流引擎LEZR与DECDIM:非规则数据边界处理的硬件级优化

C71x DSP流引擎LEZR与DECDIM:非规则数据边界处理的硬件级优化

1. 项目概述在C71x DSP这类高性能嵌入式处理器上做算法优化,数据搬运的开销常常是性能瓶颈的隐形杀手。你辛辛苦苦优化了核心计算循环,结果发现一大半时间都花在了从内存里“搬砖”上,这种感觉相当挫败。C71x的流引擎(Streaming E…

2026/7/19 12:42:02
主从同步积压缓冲区的设计与实现

主从同步积压缓冲区的设计与实现

一、引言:为什么需要积压缓冲区KV存储引擎是一款高性能的内存数据库,其高可用架构重度依赖主从复制。在主从复制体系中,主节点(Master)将写命令异步传播给从节点(Slave),从节点通过重…

2026/7/19 12:42:02
AI驱动的3D纹理革命:DeepBump如何用机器学习从单张图片生成专业法线贴图和高度贴图

AI驱动的3D纹理革命:DeepBump如何用机器学习从单张图片生成专业法线贴图和高度贴图

AI驱动的3D纹理革命:DeepBump如何用机器学习从单张图片生成专业法线贴图和高度贴图 【免费下载链接】DeepBump Normal & height maps generation from single pictures 项目地址: https://gitcode.com/gh_mirrors/de/DeepBump 在3D建模和游戏开发的世界里…

2026/7/19 12:42:02
如何用G-Helper彻底解放你的华硕笔记本性能?

如何用G-Helper彻底解放你的华硕笔记本性能?

如何用G-Helper彻底解放你的华硕笔记本性能? 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook, Expertbook,…

2026/7/19 12:42:02
5步快速掌握:浏览器端音乐解密工具终极使用指南

5步快速掌握:浏览器端音乐解密工具终极使用指南

5步快速掌握:浏览器端音乐解密工具终极使用指南 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: https://git…

2026/7/19 12:37:01

月新闻