HarmonyOS 页面跳转回调问题?

我们现在有一个页面A,点击列表会调用class工具类的方法,然后会在class中跳转新页面B然后B页面处理后会回调数据,现在跳转用的router.push,看文档返回携带参数需要在onPageShow()获取,class中无法实现,想咨询下这种有实现方案么?我看到有Navigation组件提供的跳转onPop回调,router也有传递callback的异步回调异常,我可以自己去实现这种传递回调函数么?

阅读 560
1 个回答

this.pageInfo.pushDestinationByName可以@Entry装饰的组件中使用

@Entry
@Component
export struct Index {}


this.pageInfo.pushDestinationByName('pageOne', tmp, (popInfo)=>{
  console.log('popInfo:',JSON.stringify(popInfo))
}).catch((error: BusinessError)=>{
  console.error(`[pushDestinationByName]failed, error code = ${error.code}, error.message = ${error.message}.`);
}).then(()=>{
  console.error('[pushDestinationByName]success.');
});

Navigation的push方法中popInfo是返回的new resultClass(1)数据

使用Navigation在onPop中传递参数到工具中

可以参考以下代码:

export const statusBarFunc = (popInfo: object) => {
  console.log('popInfo:',popInfo)
  //执行回调业务
}

onPageShow(): void {
  this.pageInfo.pushDestinationByName('pageOne', {} , (popInfo)=>{
  statusBarFunc(popInfo)
  console.log('输出:popInfo',JSON.stringify(popInfo))
}).catch((error: BusinessError)=>{
  console.error(`[pushDestinationByName]failed, error code = ${error.code}, error.message = ${error.message}.`);
}).then(()=>{
  console.error('[pushDestinationByName]success.');
});
}