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

HarmonyOS:ArkTS 页导航

一、什么是页面导航?

        就像在手机App里从“首页”点击进入“设置页”,再点“返回”回到首页——这个过程就是页面导航。在 HarmonyOS 的 ArkTS 开发中,我们使用 router 模块来管理这些跳转。

二、核心概念一览表

概念说明
Navigation 组件所有页面内容的容器,是实现导航的基础布局组件。
router.pushUrl()打开新页面的方法,将目标页面压入栈顶。
router.back() 或 pop()返回上一个页面,当前页面出栈。
页面栈(Page Stack)系统按顺序保存打开过的页面,后进先出(LIFO)。
参数传递跳转时可通过 params 携带数据到下一个页面。
getParams()在目标页面获取传入的数据。

三、常用方法与示例代码

✅ 示例1:两个页面之间的跳转

假设我们有两个页面:

  • MainPage.ets(首页)

  • DetailPage.ets(详情页)

➤ MainPage.ets
// pages/MainPage.ets
@Entry
@Component
struct MainPage {build() {Navigation() {Column({ space: 20 }) {Text('这是首页').fontSize(24).fontWeight('bold')Button('进入详情页').onClick(() => {router.pushUrl('pages/DetailPage', { id: 123, name: '测试商品' });})}.margin(40)}}
}
➤ DetailPage.ets
// pages/DetailPage.ets
@Entry
@Component
struct DetailPage {@State receivedData: any = {};aboutToAppear() {// 页面显示前获取传参const params = router.getParams();this.receivedData = params || {};}build() {Navigation() {Column({ space: 20 }) {Text(`收到的数据:ID=${this.receivedData.id}, 名称=${this.receivedData.name}`).fontSize(18)Button('返回首页').onClick(() => {router.back(); // 返回上一页})}.margin(40)}}
}

四、常见操作对照表

操作方法说明
跳转到新页面router.pushUrl(path, params)path 是页面路径,params 可选传参
返回上一页router.back() 或 router.pop()关闭当前页面,返回栈中前一个页面
获取传递参数router.getParams()在目标页面调用,获取跳转时携带的数据
防止误退出在 onBackPress 中拦截返回如弹窗确认是否退出编辑

五、注意事项提醒

  • ❗ 不要频繁重复 push 同一个页面,会导致卡顿或内存浪费。

  • params 建议只传基本类型和简单对象,不要传大型图片或函数。

  • ✅ 推荐使用相对路径如 'pages/DetailPage',避免路径错误。

  • ✅ 使用 aboutToAppear() 生命周期获取参数更安全。

六、总结回顾

通过本笔记的学习,你应该已经掌握了:

  • 如何用 Navigation 构建可导航界面;

  • 使用 pushUrl back 实现页面跳转;

  • 在页面间传递和接收数据;

  • 理解页面栈的工作机制。

🎯 小技巧:开发时可以在按钮点击后打印日志,检查是否成功跳转或接收到参数!

知识点:

  • 页面栈机制:页面按进入顺序入栈,后进先出,返回即出栈。

  • router.pushUrl() 方法:用于跳转并支持携带参数,触发新页面加载。

  • 参数传递与接收:通过 params 传值,目标页用 getParams() 获取数据。

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

相关文章:

  • 网站开发要学哪些国际跨境电商平台排名
  • 万网站长seo外链优化
  • 【Algorithm】前缀和算法
  • 信息架构学视角下的个人商业操作系统:Notion中央化控制台的系统设计
  • Java版社交系统/聊天系统/im/即时通信/社交通讯
  • 秋招备战day8
  • 网站推广的公司哪家好在百度上做个网站多少合适
  • 网站和域名的区别哪个门户网站做推广好
  • JavaScript 中被遗忘的关键字(with)
  • MySQL: 数据库性能优化核心要素:硬件选型与配置策略
  • 支付宝网站接口申请浙江省住房建设厅网站首页
  • C++笔记-26-类模板
  • SAP FICO工单周毛利报表
  • 聚美网站开发开题报告织梦帝国wordpress
  • SpringCloud03-Eureka02-搭建Eureka服务
  • PySide6/PyQt Ctrl 滚轮 实现文本缩放功能
  • 南通企业网站建设网络营销培训哪个好点
  • Elasticsearch-4--倒排索引的原理?
  • 一个基于Python Streamlit sqlite3 的销售单管理系统,提供商品管理、客户管理、销售单管理及打印,和应收对账单等功能
  • 网站权重是什么华大基因背景调查
  • 华为桌面图标模糊问题解决方案
  • MotionTrans: 从人类VR数据学习机器人操作的运动级迁移
  • [Dify 实战案例] 构建一个 CV 内容优化与润色助手:让 AI 成为你的简历教练
  • 【计算思维】蓝桥杯STEMA 科技素养考试真题及解析 B
  • Kanass实战教程系列(3) - 项目经理如何使用kanass有效管理项目
  • 成都网站建设 网络公司建设工程中标查询网站
  • C语言编译程序属于应用软件 | 理解编译原理与应用场景
  • 蛋糕网站模板汕头网络营销公司
  • HOT100题打卡第37天——贪心算法
  • Python学习历程——模块