鸿蒙开发 五十 页面跳转之 NavPathStack 组件之间传递参数

1、NavPathStack语法

创建NavPathStack,new NavPathStack()创建,接收创建的变量使用@Provide('NavPathStack')

修饰,固定的,例如:

@Provide('NavPathStack') pageStack: NavPathStack = new NavPathStack();

点击的组件要用 Navigation包裹,语法类似Row和Colum,格式如下:

Navigation(NavPathStack) {

组件1

组件2

组件3

}

hideTitleBar(true) 返回按钮,true不显示,false显示
.mode(NavigationMode.Stack) 展现方式 
.navDestination(目的页面)  目的页面 目的页面的是@Builder修饰的构建函数,参数是NavPathStack的pushPathByName传递的参数,语法格式是:
@Builder
PagesMap(name: string, param: object) {
  NavDestination() {
        组件
  }.hideTitleBar(false)
  .title(name)
}

2、NavPathStack实战

图一三个按钮跳转到图二,图二显示的内容根据点击按钮的不同而不同,

 

这三个按钮的需要用Navigation作为父容器包裹,目的界面由navDestination方法决定,目的界面要使用NavDestination包裹,代码资源已经上传。

3、总结

NavPathStack能使鸿蒙页面跳转,Navigation是导航的组件,需要跳转的点击的组件需要Navigation容器包裹,目的界面的组件也要NavDestination容器包裹,NavPathStack的pushPathByName决定跳到那个界面


### HarmonyOS ArkUI 页面跳转 参数传递方法 在鸿蒙操作系统中,ArkUI 组件支持多种页面跳转方式并允许携带参数。对于页面跳转,在同一 Ability 内部可以通过 `Router` 或者 `Navigator` 来完成;而页面跳转则需利用 `featureAbility` 进行处理[^1]。 当执行页面跳转的同时想要传递参数给目标页面时,可以采用如下几种策略: #### 使用 Router 传递简单参数 如果仅涉及简单的键值对形式的数据传输,则可以直接通过 URL 后面附加查询字符串的形式来发送数据。例如: ```javascript // 跳转至 Home 页面,并附带名为 'info' 的参数 router.push({ url: "pages/Home", params: { info: "来自Home页" } }); ``` #### 复杂对象序列化后传递 针对较为复杂的 JavaScript 对象结构,建议先将其转换成 JSON 字符串再作为参数的一部分传过去。接收方收到后再解析回原始的对象形态。 ```javascript const complexData = { key1: value1, key2: ["item1", "item2"] }; router.push({ url: "pages/DetailPage", params: { dataString: JSON.stringify(complexData) } }); // 接收端获取参数并反序列化 let receivedComplexData; try { const paramStr = router.getParams().dataString; receivedComplexData = JSON.parse(paramStr); } catch (error) { console.error("Failed to parse passed object:", error); } ``` #### 利用全局状态管理工具 Vuex 存储共享数据 除了上述直接在线路上传输的方法外,还可以考虑引入类似于 Vue.js 生态中的 Vuex 库来进行跨组件的状态同步操作。这种方式特别适合于那些需要被多个不相邻层级组件共同读取的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值