在使用 Navigation 中,页面栈跳转只能获取到 aboutToAppear、aboutToDisappear,无法获取到 onPageShow、onPageHide,请问这个要如何处理或者有没有其他机制可以实现
例如:
struct A1 {
// 创建NavPathStack路由栈
@State harARouter: NavPathStack = new NavPathStack();
@Builder
routerMap(builderName: string, param: object) {
if (builderName === 'B1') {
// 在 B1 是一个 @Component 组件,需要在 push 到 B1 页面时,能捕获到 onPageShow、onPageHide 等页面生命周期
B1() // 在routerMap中添加需要跳转的harB模块的B1页面
}
}
build() {
// Navigation关联NavPathStack对象
Navigation(this.harARouter) {
Button('跳转到HarB的B1页面')
.onClick(() => {
// 跳转到已在路由表注册的harB模块的B1页面
this.harARouter.pushPathByName('B1', null);
})
}
.navDestination(this.routerMap) // Navigation关联上routerMap路由表
}
}
1、navigation装饰的子组件,无法使用@entry修饰,没有onPageShow相关的生命周期,是系统规格如此
2、因为1,导致在回退时无法触发pageShow等生命周期方法,可以使用NavDestination相关的生命周期来替代,支持onShown、onHidden、onAppear、onDisAppear等,可参考文档https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-components-navdestination-V5