HarmonyOS 页面导航跳转回调传参问题

采用官方推荐的页面导航设计方案。

若从A页面使用NavPathStack.pushPath({ name: BrouterName, param: routerParam, onPop: routerOnPop })方法跳转到B页面,

再从B页面使用NavPathStack.pushPath({ name: CrouterName, param: routerParam, onPop: routerOnPop })方法跳转到C页面,

再从C页面调用NavPathStack.popToName(name: ArouterName, result: Object)返回A页面,此时A页面的onPop回调不会触发,那怎么拿到popToName传入的result呢?

HarmonyOS
2024-10-08 10:33:03
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
superinsect

此处onPop不触发,是因为在页面跳转时,传的回调函数,是对应页面的出栈的回调。如:A跳转B,此时定义的是B的出栈回调;B跳转C,此时定义的是C的出栈回调。如果此时在C页面直接popToName至A,是C出栈,调用C的出栈回调,方法是在B中执行。由于C直接返回A,B页面走的是清除,因此A页面没有触发B页面的出栈回调。

对于该问题,这里提供几个思路去解决:

1.如果页面使用的是router作为路由,可以使用router.back并指定页面同时添加返回带的参数,中间页面的历史都会被清除。

2.可以使用replacePathByName+removeByName替代popToName,中间页面使用removeByName清除,需要返回的页面使用replacePathByName 跳转并带参数。

3.可以使用popToName,并使用其他组件之间的传值方法,比如但不限于LocalStorage、自行传递方法或对象做数据处理。

分享
微博
QQ
微信
回复
2024-10-08 15:50:02
相关问题
HarmonyOS 路由跳转回问题
240浏览 • 1回复 待解决
HarmonyOS 页面问题
233浏览 • 1回复 待解决
JS跳转Java问题
4711浏览 • 1回复 待解决
HarmonyOS 页面间如何
691浏览 • 1回复 待解决
如何在navigation跳转页面时返回
1495浏览 • 1回复 待解决
HarmonyOS 本地html问题
114浏览 • 1回复 待解决
HarmonyOS router获取问题
426浏览 • 1回复 待解决
跨设备启动FA问题
8046浏览 • 1回复 待解决
路由如何接?可否给个案例?
3059浏览 • 1回复 待解决
网络请求-GET请求
343浏览 • 1回复 待解决
HarmonyOS 跳转页面问题
301浏览 • 1回复 待解决
ArkTS 网络请求 接口动态
325浏览 • 1回复 待解决
烧录问题,我有一点疑惑
7511浏览 • 4回复 待解决
实现接口的匿名实现
364浏览 • 1回复 待解决