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 页面导航跳转回问题
498浏览 • 1回复 待解决
HarmonyOS 页面跳转回问题
331浏览 • 1回复 待解决
HarmonyOS 路由跳转回问题
496浏览 • 1回复 待解决
HarmonyOS 页面问题
648浏览 • 1回复 待解决
JS跳转Java问题
5169浏览 • 1回复 待解决
如何在navigation跳转页面时返回
2123浏览 • 1回复 待解决
HarmonyOS router跳转返回如何
217浏览 • 1回复 待解决
HarmonyOS 页面间如何
1237浏览 • 1回复 待解决
HarmonyOS 路由跳转获取跳转的方式
1286浏览 • 1回复 待解决
HarmonyOS 参数问题
391浏览 • 1回复 待解决
HarmonyOS Navigation问题
289浏览 • 1回复 待解决
HarmonyOS 调用flutter页面
222浏览 • 1回复 待解决
HarmonyOS 本地html问题
691浏览 • 1回复 待解决
HarmonyOS 页面后对象出错
206浏览 • 1回复 待解决
HarmonyOS router获取问题
782浏览 • 1回复 待解决
HarmonyOS @Builder Params问题
271浏览 • 1回复 待解决
HarmonyOS HTTP使用Map问题
414浏览 • 1回复 待解决
跨设备启动FA问题
8591浏览 • 1回复 待解决