HarmonyOS NavPathStack 实战:中式美食详情页怎么记住用户从搜索、收藏还是推荐进来

发布时间:2026/7/11 21:15:48
HarmonyOS NavPathStack 实战:中式美食详情页怎么记住用户从搜索、收藏还是推荐进来 详情页写一个固定返回逻辑很快但搜索进来、收藏进来、推荐进来需要回到不同上下文。写死以后用户一返回就丢掉刚才的筛选条件。这不是页面上多写几个条件判断就能解决的事。中式美食这类应用列表、详情、收藏、购物清单、推荐流会互相跳转状态一乱用户看到的就是“刚才点过的东西没了”。应用名称中式美食本章主题中式美食详情页怎么记住用户从搜索、收藏还是推荐进来核心文件entry/src/main/ets/router/AppRouter.ets关键模块AppRouter / RecipeDetailPage技术关键词HarmonyOS,ArkUI,NavPathStack,路由参数,中式美食本章导读这章只说一个真实工程问题详情页写一个固定返回逻辑很快但搜索进来、收藏进来、推荐进来需要回到不同上下文。写死以后用户一返回就丢掉刚才的筛选条件。先看哪里为什么要看状态入口先确认哪些动作会改数据Repository 边界决定查询和写入放在哪里ViewModel 输出页面拿到的是可直接渲染的数据失败兜底出错时不能让旧列表假装是新结果当前验证环境项目版本或说明DevEco Studio6.x 系列HarmonyOS SDKAPI 12/ArkTS 工程UI 框架ArkUI 声明式开发数据层Preferences RDB relationalStore验证设备模拟器与真机页面流转先把边界说清楚我的处理方式是把状态先收口再让页面渲染。页面不直接拼查询条件组件也不偷偷改业务字段。这样写前面会慢一点但后面加搜索、收藏、推荐、购物清单联动时问题会少很多。层级应该负责不要负责Page布局、点击、加载态展示直接拼 SQL 或拼存储 keyViewModel组合页面状态暴露可渲染模型操作底层表结构Repository查询、写入、事务、去重关心按钮颜色和页面文案Model稳定字段和默认值临时 UI 动画状态exportinterfaceRecipeRouteMeta{keyword?:stringcategoryId?:stringrecipeId?:stringcheckedOnly?:booleansortBy?:default|recent|favorite}数据模型先定下来我不建议一开始就把所有字段塞到一个对象里。中式美食这里会先分两类一类是业务字段一类是页面展示字段。业务字段要稳定展示字段可以后面再算。exportinterfaceRecipeDetailState{id:stringrecipeId:stringtitle:stringcategoryName:stringupdatedAt:numberchecked:boolean}字段用途踩坑点id列表稳定 key不能用 index 顶替recipeId回到菜谱来源不然详情页不知道来源categoryName分类展示和筛选不要只存展示文案updatedAt排序和最近记录时间戳要统一单位checked勾选或状态标识刷新后要能恢复Repository 不要把脏数据交给页面页面最怕拿到半成品。Repository 要把默认值、空数组、重复记录先处理好再交给 ViewModel。这样页面写起来会笨一点但后面问题少很多。exportclassRecipeRouteMetaRepository{asyncquery(input:RecipeRouteMeta):PromiseRecipeDetailState[]{constrowsawaitthis.queryRows(input)returnrows.map(rowthis.toModel(row))}privatetoModel(row:Recordstring,Object):RecipeDetailState{return{id:String(row.id??),recipeId:String(row.recipeId??),title:String(row.title??),categoryName:String(row.categoryName??未分类),updatedAt:Number(row.updatedAt??0),checked:Boolean(row.checked??false),}}}为什么不让页面自己兜底因为页面兜底多了之后每个入口都会有一套临时补丁。搜索页补一次收藏页补一次推荐页再补一次同一道菜就会在不同页面显示成不同状态。ViewModel 只输出页面能直接用的结果ViewModel 的目标不是炫技而是让页面少判断。中式美食页面多列表、详情、收藏、购物清单都在读相似数据输出模型越稳定后面复用越舒服。ObservedexportclassRecipeRouteMetaViewModel{items:RecipeDetailState[][]loading:booleanfalseerrorMessage:stringasyncreload(query:RecipeRouteMeta){this.loadingtruethis.errorMessagetry{this.itemsawaitthis.repository.query(query)}catch(err){this.errorMessage数据暂时没取到可以稍后再试}finally{this.loadingfalse}}}页面状态用户看到什么开发要检查什么loading骨架或加载文案是否覆盖旧请求empty明确告诉用户没有结果查询条件是否真的为空error允许重试错误是否被吞掉ready稳定列表key 是否稳定ArkUI 页面不要偷改业务状态ArkUI 写起来很方便但也容易在组件里顺手改数据。我的习惯是组件只发动作ViewModel 决定怎么改。这样后面加埋点、加缓存、加失败回滚都还有位置。Componentstruct RecipeDetailStateList{ObjectLinkvm:RecipeRouteMetaViewModelbuild(){List(){ForEach(this.vm.items,(item:RecipeDetailState){ListItem(){Text(item.title).fontSize(16).fontWeight(FontWeight.Medium)}},(item:RecipeDetailState)item.id)}}}这里的 key 一定要用业务 id。不要用 index。index 在筛选、排序、插入、删除之后都会变列表复用就容易把上一条状态带到下一条。常见问题复盘问题表现处理方式旧请求覆盖新请求搜索后又跳回旧列表请求带版本号或时间戳key 不稳定勾选状态串行ForEach 使用业务 id空态不清楚用户不知道是没数据还是加载失败emptyReason 单独输出查询散落在页面每个入口逻辑不一样收回 Repository文案和真实条件不一致标题显示分类 A列表是全部筛选状态只保留一份letrequestVersion0asyncfunctionsafeReload(query:RecipeRouteMeta){constcurrentrequestVersionconstnextawaitrepository.query(query)if(current!requestVersion){return}this.itemsnext}工程验收我会按下面这几项验收不只看页面能不能跑起来。验收项操作通过标准首次进入打开目标页面loading 到 ready 不闪旧数据条件切换连续切关键词、分类、排序最终列表和标题一致空结果输入不存在的菜名空态文案清楚不显示旧列表返回页面从详情页返回原筛选条件还在勾选或收藏改一条状态后刷新状态不串到别的条目expect(vm.loading).toBe(false)expect(vm.items.every(itemitem.id.length0)).toBeTruthy()expect(newSet(vm.items.map(itemitem.id)).size).toBe(vm.items.length)本章小结中式美食详情页怎么记住用户从搜索、收藏还是推荐进来这类问题不是多写几个 if 就能解决。中式美食现在的处理方式是把查询、状态和展示拆开Repository 负责干净数据ViewModel 负责页面模型ArkUI 组件只负责展示和触发动作。如果你也在做 HarmonyOS 菜谱、工具类或者内容列表页可以先检查一件事页面里的状态是不是只有一个可信来源。只要状态来源多了低概率问题迟早会变成线上问题。

相关新闻

做漳州北京网站建设,为啥我劝你别只盯着大厂看?

做漳州北京网站建设,为啥我劝你别只盯着大厂看?

说实话,刚入行那会儿,我也觉得做网站就得找那种名气响当当的大公司。觉得那样才稳妥,毕竟谁不想花钱买个安心呢?但后来自己踩了几个坑,才慢慢琢磨出点门道。今天就想跟大家掏心窝子聊聊,关于漳州北京网站建设这档子事,到底该怎么选,怎么避坑。记得前年有个做建材的朋友…

发布时间:2026/7/11 21:14:54
辽阳专业建设网站公司电话多少?老鸟掏心窝子避坑指南

辽阳专业建设网站公司电话多少?老鸟掏心窝子避坑指南

本文关键词:辽阳专业建设网站公司电话找网站就是找面子,更是找里子。这篇文不整虚的,直接告诉你辽阳本地建站那些坑怎么躲,钱怎么花才不冤。看完这篇,你心里大概有个底,知道怎么跟那些报价不一的公司打交道。咱辽阳这地界,做网站的不少,但真正靠谱的没几个。很多人上来…

发布时间:2026/7/11 21:14:33
江苏省城乡和住房建设厅网站首页怎么找?老建筑人手把手教你避开坑

江苏省城乡和住房建设厅网站首页怎么找?老建筑人手把手教你避开坑

最近好多朋友在后台私信我,说想查江苏那边的建筑资质或者最新政策,结果在百度上搜了一堆,点进去全是广告或者过时的新闻。看着都头大。其实,想找到那个最权威、最靠谱的江苏省城乡和住房建设厅网站首页,真没那么难,但得讲究个方法。很多人一上来就搜“江苏住建厅”,然后…

发布时间:2026/7/11 21:14:32
别慌,建设电子商务网站期末考试怎么过?学长掏心窝子分享

别慌,建设电子商务网站期末考试怎么过?学长掏心窝子分享

刚考完试,整个人都虚脱了。真的,那种感觉谁懂。脑子里全是代码和数据库。如果你也在为“建设电子商务网站期末考试”发愁。别急着去背那些枯燥的理论。今天不整虚的,只说点能救命的干货。咱们先聊聊最让人头秃的前端部分。很多同学在期末大作业里,喜欢搞花里胡哨的效果。结…

发布时间:2026/7/11 22:26:58
别被忽悠了,建设银行内部网站根本不是你想的那样,真相太扎心

别被忽悠了,建设银行内部网站根本不是你想的那样,真相太扎心

最近后台私信炸了。全是问同一个问题。“有没有建行内部网站?”“听说进去能查工资?”“听说能看内部福利?”看着这些留言,我真是哭笑不得。真的,别信那些野路子。今天我就把话撂这。所谓的神秘入口,99%都是坑。先说个大实话。银行内部系统,那是防火墙里的堡垒。普通员工…

发布时间:2026/7/11 22:26:31
别被忽悠了!揭秘门户网站建设工序背后的坑与真相

别被忽悠了!揭秘门户网站建设工序背后的坑与真相

很多老板一上来就问:“做个官网多少钱?三天能不能上线?” 听到这话我就想笑。你以为是去楼下买包烟,扫码即走?门户网站那是企业的脸面,是门面,是根基,不是地摊货。我见过太多同行,为了接单,承诺三天交付,结果拿个套模板的半成品糊弄人。上线不到半年,服务器崩了,数…

发布时间:2026/7/11 22:26:18
如何使用Trivy扫描Docker镜像?新手必备的完整教程

如何使用Trivy扫描Docker镜像?新手必备的完整教程

如何使用Trivy扫描Docker镜像?新手必备的完整教程 【免费下载链接】trivy Trivy is a comprehensive, versatile security scanner, and one of the most widely used open-source security scanning tools globally. 项目地址: https://gitcode.com/openeuler/tr…

发布时间:2026/7/11 22:26:54
别瞎忙了!找建设工程监理招标网站,这3个坑我帮你踩过了

别瞎忙了!找建设工程监理招标网站,这3个坑我帮你踩过了

说实话,刚入行那会儿,我也觉得找监理招标信息特简单。不就是去网上搜搜嘛。结果呢?被那些乱七八糟的中介网站坑惨了。今天就把我踩过的坑,毫无保留地分享给你。希望能帮你省点冤枉钱,少熬几个大夜。第一步,别只盯着大平台。很多人习惯去那些所谓的“全国招投标网”看。确…

发布时间:2026/7/11 22:25:38
pyuadk完整教程:使用Python轻松实现AES和SM4加解密

pyuadk完整教程:使用Python轻松实现AES和SM4加解密

pyuadk完整教程:使用Python轻松实现AES和SM4加解密 【免费下载链接】pyuadk python wrapper of uadk 项目地址: https://gitcode.com/openeuler/pyuadk 前往项目官网免费下载:https://ar.openeuler.org/ar/ 什么是pyuadk? pyuadk是o…

发布时间:2026/7/11 22:25:51
别瞎找了!稼禾建设集团网站到底长啥样?扒开内幕看真相

别瞎找了!稼禾建设集团网站到底长啥样?扒开内幕看真相

你是不是也在找那个传说中的稼禾建设集团网站?我也找过。真的,那种感觉太难受了。就像你在深夜饿得前胸贴后背,打开冰箱却发现里面空空如也。你想知道他们家到底接没接过什么大项目,想知道他们的资质有多硬,想看看那些高楼大厦背后有没有他们的名字。结果呢?搜出来的全是…

发布时间:2026/7/11 0:00:38
温江区建设局网站怎么查进度?新手避坑指南与真实操作细节

温江区建设局网站怎么查进度?新手避坑指南与真实操作细节

最近好多朋友私信我, 问温江区那边搞装修或者买房, 到底怎么查审批进度。 很多人第一反应就是去现场排队, 其实现在都数字化了, 大部分业务都能在温江区建设局网站搞定。 但这里头水挺深, 稍微不注意就容易踩坑。 今天我就结合这几年在温江跑工地的经验, 给大家捋一捋, …

发布时间:2026/7/11 0:00:41
上海最好网站建设公司怎么选?老站长掏心窝子的避坑指南

上海最好网站建设公司怎么选?老站长掏心窝子的避坑指南

本文关键词:上海最好网站建设公司说实话,在这个行当摸爬滚打这么多年,见过太多老板被坑得底裤都不剩。昨天有个做建材的朋友找我喝茶,一脸愁容。他说之前找了一家所谓的“高端”团队,花了八万块,结果做出来的网站跟十年前的模板似的,连个手机适配都搞不定。他问我,到底…

发布时间:2026/7/11 0:01:45
做个人信息管理网站建设,这3个坑我踩了七年,你千万别再跳

做个人信息管理网站建设,这3个坑我踩了七年,你千万别再跳

做了七年建站,见过太多老板花大钱买模板,最后发现根本没法用。特别是现在大家都讲究数据隐私,想搞个个人信息管理网站建设,结果越搞越乱。这篇文不整虚的,直接说怎么把这套系统落地,让你自己的数据真正听话。先说个真事儿。去年有个做自由职业的朋友找我,他说想建个网站…

发布时间:2026/7/11 18:48:02
杨凌规划建设局网站怎么查最新规划?老杨说点大实话

杨凌规划建设局网站怎么查最新规划?老杨说点大实话

杨凌规划建设局网站你是不是也遇到过这种情况?想看看自家旁边要修路,还是建公园。翻遍了手机,搜出来的全是几年前的旧闻。或者好不容易找到个入口,页面加载慢得像蜗牛。心里那个急啊,真的,懂的人都懂。我是老杨,在杨凌混了十几年,跟这行打交道不少。今天不跟你扯那些虚…

发布时间:2026/7/11 16:17:41
杭州网站建设 seo 避坑指南:别被那些只会套模板的忽悠了

杭州网站建设 seo 避坑指南:别被那些只会套模板的忽悠了

昨天半夜两点,我还在改一个客户的后台,咖啡都凉透了。这哥们儿是做机械配件的,在余杭那边,找的前一家公司花了八千块做了个站,结果上线一个月,百度连个影子都没有。他急得给我打电话,说是不是被黑了。我让他把链接发过来,打开一看,好家伙,那代码乱得跟刚被猫抓过的毛…

发布时间:2026/7/11 12:24:48
建站7年才悟出的网站建设思路,别再花冤枉钱了

建站7年才悟出的网站建设思路,别再花冤枉钱了

做建站这行整整7年了。 见过太多老板花几万块, 最后做出来的网站像个垃圾场。 今天不整那些虚头巴脑的术语。 就聊聊我踩过的坑, 和真正能落地的网站建设思路。很多老板一上来就问: “多少钱能做个高大上的?” 我通常直接劝退。 因为方向错了, 你给再多钱也是打水漂。 真正…

发布时间:2026/7/11 8:50:55
合肥的网站建设避坑指南:别被低价忽悠,这3个细节决定生死

合肥的网站建设避坑指南:别被低价忽悠,这3个细节决定生死

做企业官网最怕什么?不是技术难,是交钱后没人管,或者上线一个月连个访客都没有。这篇东西不扯虚的,直接告诉你怎么在合肥找个靠谱的团队,或者自己怎么避坑。先说个大实话,我在合肥混这行五年多,见过太多老板因为贪便宜吃大亏。你去百度搜“合肥的网站建设”,出来一堆报…

发布时间:2026/7/10 18:05:06
别被忽悠了!德州网站建设那些坑,我拿真金白银换来的教训

别被忽悠了!德州网站建设那些坑,我拿真金白银换来的教训

做这行久了,心里就憋着一股火。每次看到客户拿着网上抄来的模板,问我能不能做成“苹果官网”那种效果。我就想笑。真的,太想笑了。今天咱不整那些虚头巴脑的专业术语。就聊聊德州网站建设里,那些让人头秃的真实事儿。我有个客户,老张。他是做德州本地建材的,实在人。当初…

发布时间:2026/7/10 16:48:50