阅读时长约 18 分钟 | 难度★★★★☆ | 篇章第 4 篇 · 二十八星宿模块对应源码entry/src/main/ets/pages/mansion/MansionListPage.ets、MansionDetailPage.ets前言列表项点击跳转详情页是移动端最经典的交互模式。玄象项目星宿列表页点击星宿行后通过router.pushUrl携带mansionName参数跳转到详情页详情页通过router.getParams接收参数并加载对应星宿数据。本篇将深入剖析玄象项目列表项点击传参的实现从router.pushUrl的params参数序列化、router.getParams参数反序列化、类型安全断言到参数验证与默认值处理。掌握这套传参方案您就能为任何 HarmonyOS 应用实现可靠的页面间数据传输。提示router.getParams返回Object类型玄象项目通过as Recordstring, string类型断言实现类型安全。一、列表页发送参数1.1 列表项点击事件ListItem(){Row(){Text(mansion.name)// ...}.onClick((){router.pushUrl({url:pages/mansion/MansionDetailPage,params:{mansionName:mansion.name}});})}二、详情页接收参数2.1 参数接收aboutToAppear():void{constparamsrouter.getParams()asRecordstring,string;constnameparams[mansionName]||角宿;this.mansionMansionData.getMansionByName(name);}三、参数验证3.1 常见验证aboutToAppear():void{constparamsrouter.getParams()asRecordstring,string;if(!params||!params[mansionName]){this.mansionMansionData.getMansionByName(角宿);return;}constnameparams[mansionName];this.mansionMansionData.getMansionByName(name);if(!this.mansion){this.mansionMansionData.getMansionByName(角宿);}}四、参数序列化方案4.1 基本类型params支持基本类型params:{mansionName:角宿,// stringmansionIndex:0,// numberisFavorite:true// boolean}4.2 复杂对象params:{mansion:JSON.stringify({name:角宿,wuXing:木,animal:蛟})}// 接收constmansionDataJSON.parse(params[mansion]);五、传参方案总结5.1 参数传递链路MansionListPage ↓ onClick router.pushUrl({ url: ..., params: { mansionName: 角宿 } }) ↓ MansionDetailPage.aboutToAppear ↓ router.getParams() as Recordstring, string ↓ MansionData.getMansionByName(角宿) ↓ State mansion 数据就绪六、参数传递的最佳实践6.1 参数验证与容错aboutToAppear():void{try{constparamsrouter.getParams()asRecordstring,string;if(!params||!params[mansionName]){// 兜底无参数时默认第一个this.mansionMansionData.getMansionByName(角宿);return;}constnameparams[mansionName];this.mansionMansionData.getMansionByName(name);if(!this.mansion){// 兜底未找到星宿时默认第一个this.mansionMansionData.getMansionByName(角宿);}}catch(err){hilog.error(0x0000,DetailPage,Params error: %{public}s,err.message);this.mansionMansionData.getMansionByName(角宿);}}6.2 参数传递的常见问题问题原因解决方案参数为 undefined跳转时未传 params使用默认值兜底类型不匹配跳转方传了错误类型使用类型断言 验证参数丢失页面被系统回收重建使用 AppStorage 持久化特殊字符参数包含特殊字符使用 encodeURIComponent 编码6.3 复杂数据的传递方案对于复杂对象如命盘数据建议使用JSON.stringify序列化// 跳转方router.pushUrl({url:pages/mingli/MingliAnalysisPage,params:{baziData:JSON.stringify({year:1990,month:5,day:15,hour:10,minute:30,gender:男})}});// 接收方constparamsrouter.getParams()asRecordstring,string;constbaziDataJSON.parse(params[baziData]);七、列表页到详情页的完整数据流7.1 数据流链路MansionListPage ↓ 用户点击星宿行 handleMansionClick(mansion.name) ↓ router.pushUrl({ url: pages/mansion/MansionDetailPage, params: { mansionName: 角宿 } }) ↓ MansionDetailPage.aboutToAppear() ↓ router.getParams() → { mansionName: 角宿 } ↓ MansionData.getMansionByName(角宿) ↓ State mansion MansionInfo 对象 ↓ build() 渲染星宿详情7.2 数据流的设计原则最小化传输只传递必要参数如 ID非完整数据对象容错处理始终为参数提供默认值类型安全使用as Recordstring, string类型断言日志记录关键参数传递时输出日志便于排查总结本篇以玄象项目星宿列表→详情页传参为蓝本深入剖析了router.pushUrl参数传递从params序列化、router.getParams反序列化、类型断言到参数验证与默认值处理。掌握这套传参方案您就能为任何 HarmonyOS 应用实现可靠的页面间数据传输。如果这篇文章对你有帮助欢迎点赞、收藏⭐、关注你的支持是我持续创作的动力相关资源HarmonyOS 官方文档router API开源鸿蒙跨平台社区https://openharmonycrossplatform.csdn.net
企业数字化 ERP 产品动态
相关推荐
NSGAII算法在无人机3D路径规划中的Matlab实现与优化 1. 项目背景与核心价值无人机3D路径规划是当前智能飞行器领域的关键技术挑战。在复杂三维环境中,无人机需要避开建筑物、山体等障碍物,同时满足飞行时间、能耗、安全性等多重约束条件。传统单目标优化算法往往难以平衡这些相互冲突的指标,这正… · 2026/9/17 3:46:25
解决Windows中mfc140u.dll缺失问题的完整指南 1. 问题现象与背景解析当你在Windows系统运行某些软件时,突然弹出"无法启动此程序,因为计算机中丢失mfc140u.dll"的错误提示,这种情况通常发生在以下场景:安装新版本Visual C运行库后旧版本被覆盖误删系统关键文件使用绿… · 2026/9/17 20:16:48
大学生做课程项目用什么AI编程软件?最新权威8款AI编程工具全解析(含TaoToken统一Key配置) /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 22:35:18
Claude Code 使用指南:从 CLAUDE.md 到 Skill 子代理的协作配置 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 22:35:18
python如何做接口自动化测试 进行接口自动化测试的步骤主要包括这些方面呢, 第一个阶段是选择合适的测试框架, 第二个阶段是要编写测试脚本, 第三个阶段是需要设置测试环境, 第四个阶段是执行测试并生成报告。在这里, 我们会把如何使用进行接口自动化测试的过程详细去描述一下的。一、去挑选一个恰当的测试… · 2026/9/27 22:35:18
做服装在哪个网站找新手入门 不会代码做服装站?3步图解步骤教你低成本起步 你是不是也卡在这一步:手里有货,脑子里有图,但就是不会代码,看着那些后台配置头大? 别急, 做服装在哪个网站找 货源只是第一步,怎么把展示出来才是关键。 今天不聊虚的,直接上 图解步骤… · 2026/9/27 22:35:12
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01