HarmonyOS:ArkTS 页导航

一、什么是页面导航?

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

二、核心概念一览表

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

三、常用方法与示例代码

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

假设我们有两个页面:

  • MainPage.ets(首页)

  • DetailPage.ets(详情页)

➤ MainPage.ets
TypeScript 复制代码
// 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
TypeScript 复制代码
// 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() 获取数据。

相关推荐
AI即插即用6 分钟前
超分辨率重建(代码实践) | CVPR 2025 LSRNA:利用隐空间超分与噪声对齐,打破扩散模型生成 4K 图像的效率瓶颈
图像处理·人工智能·深度学习·神经网络·计算机视觉·超分辨率重建
盼小辉丶10 分钟前
PyTorch实战(23)——基于Transformer生成音乐
pytorch·深度学习·transformer·生成模型
后端小张12 分钟前
【AI 学习】解锁Claude Skills:开启AI应用新维度
人工智能·深度学习·学习·自然语言处理·gpt-3·claude·skill
WangYaolove13148 小时前
基于深度学习的中文情感分析系统(源码+文档)
python·深度学习·django·毕业设计·源码
软件算法开发8 小时前
基于改进麻雀优化的LSTM深度学习网络模型(ASFSSA-LSTM)的一维时间序列预测算法matlab仿真
深度学习·matlab·lstm·一维时间序列预测·改进麻雀优化·asfssa-lstm
狮子座明仔9 小时前
Engram:DeepSeek提出条件记忆模块,“查算分离“架构开启LLM稀疏性新维度
人工智能·深度学习·语言模型·自然语言处理·架构·记忆
2301_8002561110 小时前
【人工智能引论期末复习】 第6章 深度学习4 - RNN
人工智能·rnn·深度学习
徐先生 @_@|||10 小时前
Palantir Foundry 五层架构模型详解
开发语言·python·深度学习·算法·机器学习·架构
翱翔的苍鹰11 小时前
神经网络中损失函数(Loss Function)介绍
人工智能·深度学习·神经网络
元智启12 小时前
企业AI应用面临“敏捷响应”难题:快速变化的业务与相对滞后的智能如何同步?
人工智能·深度学习·机器学习