HarmonyOS 6.1 实战:Navigation 路由组件全面解析
前言Navigation是 HarmonyOS ArkUI 6.x 推荐的页面导航框架取代传统的router.push/pop模式实现组件内路由管理。它内置 AppBar顶部导航栏、ToolBar底部工具栏、侧边导航等能力并通过NavPathStack管理路由栈。本文完整演示从列表页到详情页的路由跳转实现。运行效果初始状态列表页点击条目进入详情页核心 API 一览API说明Navigation(pathStack)导航根容器绑定路由栈NavPathStack路由栈管理器控制页面的 push/popNavDestination路由目标页面容器类似 Destination.navDestination(builder)注册路由表名称 → 组件的映射.title(string/CustomBuilder)AppBar 标题支持自定义.mode(NavigationMode)导航模式Stack / Split / Auto.toolbarConfiguration([])底部工具栏配置pathStack.pushPathByName(name, param)按名称跳转pathStack.pop()返回上一页pathStack.popToRoot()返回根页完整示例代码interface ArticleItem { id: number title: string summary: string content: string author: string time: string icon: string tag: string readTime: string } // 路由参数结构 interface ArticleParam { articleId: number } Entry Component struct Index { private pathStack: NavPathStack new NavPathStack() private articles: ArticleItem[] [ { id: 1, icon: , tag: 布局, title: Stack 层叠布局与 Overlay 浮层详解, summary: 深入理解 alignContent 九宫格、zIndex 层叠顺序与 overlay 浮层实战。, content: Stack 是 ArkUI 中实现层叠布局的核心容器..., author: 鸿蒙开发者, time: 2分钟前, readTime: 8分钟 }, { id: 2, icon: , tag: 列表, title: List 高性能长列表与分组吸顶实战, summary: 虚拟化渲染原理、ListItemGroup 分组、sticky 吸顶的完整实现。, content: List 是 ArkUI 中专为长列表场景设计的容器..., author: 鸿蒙开发者, time: 1小时前, readTime: 10分钟 }, { id: 3, icon: , tag: 轮播, title: Swiper 轮播图与页面滑动完整指南, summary: DotIndicator 自定义样式、SwiperController 编程翻页、卡片流预览效果。, content: Swiper 是 ArkUI 专为轮播图和画廊设计的滑动容器..., author: 鸿蒙开发者, time: 3小时前, readTime: 7分钟 }, { id: 4, icon: , tag: 导航, title: Tabs 标签页布局底部导航到顶部分类, summary: 底部导航栏实现、嵌套 Tabs、自定义 TabBar 样式完整示例。, content: Tabs 是 ArkUI 中实现标签页导航的专用组件..., author: 鸿蒙开发者, time: 昨天, readTime: 9分钟 }, { id: 5, icon: , tag: 侧边栏, title: SideBarContainer 侧边导航大屏双栏布局实战, summary: Embed vs Overlay 模式、autoHide 自适应、自定义汉堡菜单。, content: SideBarContainer 是 ArkUI 专为平板大屏设计的导航容器..., author: 鸿蒙开发者, time: 2天前, readTime: 11分钟 }, ] // 路由表名称 → 页面 Builder 的映射 Builder pageMap(name: string, param: ESObject) { if (name detail) { ArticleDetailPage({ pathStack: this.pathStack, articleId: (param as ArticleParam).articleId, articles: this.articles }) } } Builder listItem(article: ArticleItem) { Row({ space: 12 }) { Text(article.icon) .fontSize(24) .width(48).height(48) .textAlign(TextAlign.Center) .backgroundColor(#f0f5ff) .borderRadius(12) Column({ space: 4 }) { Text(article.title) .fontSize(14) .fontWeight(FontWeight.Medium) .fontColor(#1a1a1a) .maxLines(2) .textOverflow({ overflow: TextOverflow.Ellipsis }) Row({ space: 8 }) { Text(article.tag) .fontSize(11) .fontColor(#0066ff) .backgroundColor(#f0f5ff) .padding({ left: 6, right: 6, top: 2, bottom: 2 }) .borderRadius(4) Text(article.time).fontSize(11).fontColor(#aaa) Text(article.readTime 阅读).fontSize(11).fontColor(#bbb) } } .layoutWeight(1) .alignItems(HorizontalAlign.Start) } .width(100%) .padding({ left: 16, right: 16, top: 14, bottom: 14 }) .backgroundColor(#ffffff) .border({ width: { bottom: 1 }, color: #f5f5f5 }) .onClick(() { // push 到详情页传递参数 this.pathStack.pushPathByName(detail, { articleId: article.id } as ArticleParam) }) } build() { Navigation(this.pathStack) { // 列表页根页面 Column({ space: 0 }) { // 搜索栏 Row({ space: 8 }) { Text().fontSize(16).fontColor(#888) Text(搜索文章...) .fontSize(14).fontColor(#bbb).layoutWeight(1) } .width(100%) .height(40) .padding({ left: 14, right: 14 }) .backgroundColor(#f5f5f5) .borderRadius(20) .margin({ left: 16, right: 16, top: 8, bottom: 4 }) // 文章列表 List() { ForEach(this.articles, (article: ArticleItem) { ListItem() { this.listItem(article) } }) } .divider({ strokeWidth: 1, color: #f8f8f8, startMargin: 76 }) .layoutWeight(1) .backgroundColor(#f8f8f8) } .width(100%) .height(100%) } .title(HarmonyOS 学习笔记) .navDestination(this.pageMap) .mode(NavigationMode.Stack) .titleMode(NavigationTitleMode.Mini) .toolbarConfiguration([ { value: 首页, icon: $r(sys.media.ohos_ic_public_home) }, { value: 设置, icon: $r(sys.media.ohos_ic_public_settings) }, ]) .width(100%) .height(100%) .backgroundColor(#f8f8f8) } } // ── 详情页组件 ── Component struct ArticleDetailPage { pathStack: NavPathStack new NavPathStack() articleId: number 0 articles: ArticleItem[] [] private getArticle(): ArticleItem { for (let i 0; i this.articles.length; i) { if (this.articles[i].id this.articleId) { return this.articles[i] } } return this.articles[0] } build() { NavDestination() { Scroll() { Column({ space: 16 }) { // 头部卡片 Column({ space: 12 }) { Text(this.getArticle().icon).fontSize(48) Text(this.getArticle().tag) .fontSize(12).fontColor(#0066ff) .backgroundColor(#f0f5ff) .padding({ left: 10, right: 10, top: 3, bottom: 3 }) .borderRadius(10) Text(this.getArticle().title) .fontSize(20).fontWeight(FontWeight.Bold).fontColor(#111).lineHeight(28) Row({ space: 12 }) { Text(this.getArticle().author).fontSize(13).fontColor(#888) Text(this.getArticle().time).fontSize(13).fontColor(#aaa) Text(this.getArticle().readTime 阅读).fontSize(13).fontColor(#aaa) } } .width(100%).padding(20) .backgroundColor(#fff).borderRadius(12) .border({ width: 1, color: #f0f0f0 }) .alignItems(HorizontalAlign.Center) // 摘要 Column({ space: 8 }) { Text( 摘要) .fontSize(15).fontWeight(FontWeight.Bold).fontColor(#333) Text(this.getArticle().summary) .fontSize(14).fontColor(#666).lineHeight(22) } .width(100%).padding(16) .backgroundColor(#fff).borderRadius(12) .border({ width: 1, color: #f0f0f0 }) .alignItems(HorizontalAlign.Start) // 正文 Column({ space: 10 }) { Text( 正文).fontSize(15).fontWeight(FontWeight.Bold).fontColor(#333) Text(this.getArticle().content 更多内容持续撰写中欢迎关注本系列教程。) .fontSize(14).fontColor(#555).lineHeight(22) } .width(100%).padding(16) .backgroundColor(#fff).borderRadius(12) .border({ width: 1, color: #f0f0f0 }) .alignItems(HorizontalAlign.Start) Column().height(20) } .width(100%).padding({ left: 16, right: 16, top: 16, bottom: 16 }) } .width(100%).height(100%) } .title(this.getArticle().title) .backButtonIcon($r(sys.media.ohos_ic_back)) .onBackPressed(() { this.pathStack.pop() return true }) } }关键知识点1. NavPathStack 是路由核心private pathStack: NavPathStack new NavPathStack() // push跳转到目标页传参 this.pathStack.pushPathByName(detail, { id: 1 }) // pop返回上一页 this.pathStack.pop() // popToRoot返回到根页 this.pathStack.popToRoot() // 获取当前路由栈深度 this.pathStack.size()2. navDestination注册路由表Builder pageMap(name: string, param: ESObject) { if (name detail) { DetailPage({ pathStack: this.pathStack, id: (param as MyParam).id }) } } Navigation(this.pathStack) .navDestination(this.pageMap) // 传入路由表 Builder3. NavDestination目标页面容器每个目标页面必须用NavDestination包裹它提供 AppBar、返回按钮等Component struct DetailPage { pathStack: NavPathStack new NavPathStack() build() { NavDestination() { // 页面内容 } .title(详情页) .onBackPressed(() { this.pathStack.pop() return true // 返回 true 表示拦截了系统返回由自己处理 }) } }4. NavigationMode 三种模式模式效果适用场景NavigationMode.Stack全屏堆叠手机手机应用NavigationMode.Split左右分栏平板平板大屏NavigationMode.Auto根据屏幕宽度自适应通用推荐5. 参数传递pushPathByName的第二个参数类型是ESObject等同于object接收方需要做类型断言// 推送方 this.pathStack.pushPathByName(detail, { articleId: 1 } as ArticleParam) // 接收方NavDestination 对应的组件属性 articleId: number 0 // 由 Navigation 框架注入小结Navigation是 HarmonyOS 推荐的组件内路由方案比router.push更灵活NavPathStack管理路由栈pushPathByName/pop/popToRoot是核心操作navDestination(Builder)注册路由表建立名称到组件的映射目标页必须用NavDestination包裹并在onBackPressed中调用pop()NavigationMode.Auto自动在手机Stack和平板Split之间切换是最佳实践

相关新闻

加密软件怎么选?安得卫士三大差异化技术碾压传统方案

加密软件怎么选?安得卫士三大差异化技术碾压传统方案

数字化时代,图纸、源代码、财务合同、核心方案是企业生存根基。据行业统计,超 68% 企业发生过内部数据泄密,U 盘拷贝、微信邮件外发、员工离职带走、勒索病毒篡改、越权查看五大漏洞,每年给制造、半导体、科研企业造成数十万至千万…

2026/7/22 15:48:47阅读更多 →
HarmonyOS 6.1 实战:SideBarContainer 侧边栏导航详解

HarmonyOS 6.1 实战:SideBarContainer 侧边栏导航详解

前言 SideBarContainer 是 ArkUI 专为平板/大屏设备设计的侧边导航容器,在宽屏下展示侧边栏 主内容双栏布局,窄屏时自动折叠为汉堡菜单。本文演示从基础用法到自定义侧边栏的完整实现。 运行效果 初始状态(侧边栏展开,首页&#…

2026/7/22 15:48:47阅读更多 →
智源多模型测试:大语言模型智能体具备协助绕过现有生物安全机制的技术能力

智源多模型测试:大语言模型智能体具备协助绕过现有生物安全机制的技术能力

当前大语言模型正从“聊天机器”进化为能调用工具、规划任务的“智能体”。这种进化在生物信息学、实验设计等领域展现出巨大潜力,除此之外,需要正视一个关键问题:当AI的能力从信息处理延伸到物理实验操作,生物安全的边界会发生怎…

2026/7/22 15:48:47阅读更多 →
嵌入式视频开发实战:VPDMA与HD_VENC_D寄存器配置与调试指南

嵌入式视频开发实战:VPDMA与HD_VENC_D寄存器配置与调试指南

1. 项目概述与核心价值 在嵌入式多媒体开发,尤其是基于德州仪器(TI)DaVinci或类似SoC平台进行高清视频应用开发时,工程师迟早会与两个核心硬件模块正面交锋: 视频处理直接内存访问(VPDMA) 和 …

2026/7/22 16:40:54阅读更多 →
C2000 ERAD模块实战:硬件级系统监控与实时诊断技术解析

C2000 ERAD模块实战:硬件级系统监控与实时诊断技术解析

1. 项目概述:为什么我们需要硬件级的“系统哨兵”?在电机驱动、数字电源或者新能源汽车的电控单元里干活久了,你一定会对“实时性”和“可靠性”这两个词有切肤之痛。我们设计的系统,本质上是一个永不停歇的精密循环:A…

2026/7/22 16:40:54阅读更多 →
TI HDVPSS寄存器深度解析:DVO时序与噪声滤波配置实战

TI HDVPSS寄存器深度解析:DVO时序与噪声滤波配置实战

1. 项目概述与核心价值 在嵌入式视频处理系统的开发中,尤其是基于德州仪器(TI)这类高性能处理器的项目,驱动工程师和系统架构师经常会遇到一个核心挑战:如何将硬件数据手册中冰冷的寄存器位描述,转化为稳定…

2026/7/22 16:40:54阅读更多 →
AI漫剧的三大主要形式

AI漫剧的三大主要形式

你以为AI漫剧只有一种?Too young too simple! AI漫剧其实有三大主要形式,每种形式都有自己独特的魅力和适用场景。了解它们的​区别,可以帮助你找到最适合自己的创作方向。 形式一:静态漫画 静态漫画是最接近传统漫画的形式——只不过传统漫画是人工画的,静态漫画是AI画…

2026/7/22 16:40:54阅读更多 →
GitHub_Trending/cla/claude-skills自定义参考库教程:构建专属知识库

GitHub_Trending/cla/claude-skills自定义参考库教程:构建专属知识库

GitHub_Trending/cla/claude-skills自定义参考库教程:构建专属知识库 【免费下载链接】claude-skills 345 Claude Code skills & agent skills & plugins (30 Agents, 70 custom commands, 330 skills, customizable references, scripts)for Claude Code, …

2026/7/22 16:40:54阅读更多 →
TI VPDMA中断配置实战:从寄存器解析到系统级调试

TI VPDMA中断配置实战:从寄存器解析到系统级调试

1. 项目概述 在嵌入式视频处理系统的开发中,尤其是面对德州仪器(TI)这类高性能SoC时,中断管理往往是决定系统稳定性和实时性的关键。很多工程师拿到芯片手册,看到动辄几十页的寄存器描述,尤其是像VPDMA&…

2026/7/22 16:38:54阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 0:53:59阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 0:53:59阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/22 0:53:59阅读更多 →
中小企业小程序开发公司怎么选:预算、上手和售后避坑指南

中小企业小程序开发公司怎么选:预算、上手和售后避坑指南

中小企业做小程序,最常见的矛盾是预算有限,但又不希望功能太单薄;没有技术团队,但又希望后续能自己运营;想快速上线,又担心隐性收费和售后失联。选型时如果只看“低价套餐”或“案例数量”,很容…

2026/7/22 0:01:17阅读更多 →
GEO优化如何沉淀长期内容资产?广拓时代谈AI搜索时代的内容ROI

GEO优化如何沉淀长期内容资产?广拓时代谈AI搜索时代的内容ROI

企业做营销,最怕钱花完了,资产没有留下。 效果广告能带来一段时间的曝光,但预算停止后,流量往往也随之停止。短视频内容可能在几天内冲高,也可能很快沉下去。AI搜索时代,企业需要重新思考一个问题&#xff…

2026/7/22 0:01:17阅读更多 →
Agent 终态判定:何时该停止思考、给出最终回复

Agent 终态判定:何时该停止思考、给出最终回复

Agent 终态判定:何时该停止思考、给出最终回复 一、你的 Agent 在"再想想"的循环里绕了 12 轮,用户已经关窗口了 Agent 与人最大的区别是:人知道什么时候该停下来给答案,Agent 会一直"想"下去。你给 Agent 接…

2026/7/22 0:01:17阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/21 22:53:50阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/21 18:53:30阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/21 18:53:30阅读更多 →