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

入门版 鸿蒙 组件导航 (Navigation)

入门版 鸿蒙 组件导航 (Navigation)

注意:使用 DevEco Studio 运行本案例,要使用模拟器,千万不要用预览器,预览器看看 Navigation 布局还是可以的

  1. 效果:点击首页(Index)跳转到页面(MainPage)
  2. 先写 Index 和 MainPage 这两个页面
  3. 路由相关配置

Index 和 MainPage 两个页面,点击这个两个页面可以互相跳转

// src/main/ets/pages/Index.ets
@Entry
@Component
struct Index {// 创建导航路径栈实例,用于管理页面跳转历史pageStack: NavPathStack = new NavPathStack()build() {// 使用Navigation组件作为导航容器,传入pageStack管理路由Navigation(this.pageStack) {Column() {}.width('100%').height('100%').backgroundColor(Color.Blue).onClick(() => {// 击时压入名为"MainPage"的新页面到路径栈this.pageStack.pushPathByName("MainPage", null);})}}
}
// src/main/ets/pages/MainPage.ets
// 跳转页面入口函数
@Builder
export function MainPageBuilder() {MainPage()
}@Component
struct MainPage {pageStack: NavPathStack = new NavPathStack()build() {// 定义导航目标页面的容器NavDestination() {}.width('100%').height('100%').backgroundColor(Color.Brown).title('MainPage').onClick(() => {// 清空导航路径栈(用于返回首页)this.pageStack.clear()})// 页面就绪回调onReady.onReady((context: NavDestinationContext) => {// 从上下文中获取路径栈实例(需确保与父组件共享同一个实例)this.pageStack = context.pathStack})}
}

路由相关的配置

在跳转目标模块的配置文件 module.json5 添加路由表配置

// src/main/module.json5{"module" : {"routerMap": "$profile:route_map"}}

添加完路由配置文件地址后,需要在工程 resources/base/profile 中创建 route_map.json 文件

// src/main/resources/base/profile/router_map.json
{"routerMap": [{"name": "MainPage","pageSourceFile": "src/main/ets/pages/MainPage.ets","buildFunction": "MainPageBuilder","data": {"description": "this is MainPage"}}]
}
// src/main/resources/base/profile/main_pages.json
{"src": ["pages/Index"]
}

相关文章:

  • Java 中的 Continuation:深入理解虚拟线程的基石
  • Uni-app网络请求AES加密解密实现
  • Uniapp:showLoading(等待加载)
  • Docker安装的mysql限制ip访问
  • 1. 用户之窗
  • iVX 图形化编程如何改写后端开发新范式
  • 后端Web实战之登录认证,JWT令牌,过滤器Filter,拦截器Interceptor一篇文章so easy!!!
  • vuex源码分析(一)——初始化vuex
  • truffle
  • SpringMVC 使用thymeleaf 进行数据展示
  • 微信小程序开发中关于首屏加载、本地数据持久化的思考
  • vscode源代码管理Tab-文件右侧标志(M、A 等)的含义
  • Unity AI-使用Ollama本地大语言模型运行框架运行本地Deepseek等模型实现聊天对话(二)
  • 线性代数与数据学习
  • k8s基本概念-YAML
  • flume----初步安装与配置
  • 9.Three.js中 ArrayCamera 多视角相机详解+示例代码
  • Dockerfile讲解与示例汇总
  • C++ 解决一个简单的图论问题 —— 最小生成树(以 Prim 算法为例)
  • <uniapp><插件><UTS>在uniapp中,创建自己的插件并发布到uni插件市场
  • 中国纪检监察报刊文:要让劳动最光荣成为社会的崇高风尚
  • 为何未来的福利国家必须绿色且公平
  • 全球前瞻|王毅赴巴西出席金砖外长会,加拿大迎来“几十年来最重要大选”
  • 财政部下达农业生产防灾救灾资金3.76亿元,支持黄淮海等地抗旱保春播
  • 伊朗最大港口爆炸:26公里外都能听到,超七百人受伤,原因指向化学品储存
  • 从中央政治局会议看经济工作着力点:以高质量发展的确定性应对外部不确定性