HarmonyOS 鸿蒙Next NavPathStack.popToName 时,父页面如何获取到result 参数返回的数据?
HarmonyOS 鸿蒙Next NavPathStack.popToName 时,父页面如何获取到result 参数返回的数据?
导航路径如下,都是通过 Navigation 进行导航
A -> B -> C
进入 C 之后,调用popToName 返回到 B,在 B 页面的 NavDestination.onShow 中,通过
getParamByName 或者
getParamByIndex 拿到的都是 A -> B 时的参数,而不是从 C 返回 B 时的参数,请问 B 页面如何获取到到从 C 页面返回时,所携带的参数?
同问
this.pageInfos.pushPathByName("pageOne",new Object(),(popInfo)=>{
console.log("-pushPathByName" + popInfo.info.name + ', result: ' + JSON.stringify(popInfo.result) )
})
C 点击返回的时候popToName 参数就在上面的那里接收
更新一下,找到一种很别扭的方法:
1. popToName
2. replacePathByName,这时param 参数传入需要返回的数据
3. getParamByName
这个方法可以,但是 replace 没有页面切换动画是什么问题
popToName之前通过getParamByName把数据替换一下,通过navDestinationSwitch就能拿到新的数据了
observer.on('navDestinationSwitch',this.getUIContext(),(info)=>{
//1 push
//2 pop
const param= info.to['param'] as object
console.info('NavDestination navDestinationSwitch', info.operation);
})
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17
navigation 导航时,生命周期回调并不会回调onPageShow方法
而是通过 NavDestination.onShow 触发
在HarmonyOS鸿蒙系统中,当使用NavPathStack.popToName
方法返回到父页面时,若希望父页面能够获取到子页面返回的result
参数数据,可以通过以下方式实现:
-
子页面返回数据:在子页面执行
Intent
返回操作时,通过Intent
的putExtra
方法将需要返回的数据作为参数添加到Intent
中。 -
父页面接收数据:父页面需要在
onNewIntent
或onActivityResult
(如果适用)方法中,通过Intent
的getExtras
或getStringExtra
等方法获取到子页面传递过来的数据。 -
确保数据传递的时机:确保在调用
NavPathStack.popToName
方法后,子页面的数据已经正确设置到返回的Intent
中,并且父页面在适当的生命周期方法中能够接收到这个Intent
。 -
数据类型的匹配:在传递和接收数据时,注意数据类型的匹配,以避免类型不匹配导致的异常。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。