在NavDestination(){}.onReady里给this.pageStack赋值,在aboutToAppear里打印输出页面栈,页面栈列表为什么为空(前面已经跳转了几個NavDestination)? HarmonyOS 鸿蒙Next
在NavDestination(){}.onReady里给this.pageStack赋值,在aboutToAppear里打印输出页面栈,页面栈列表为什么为空(前面已经跳转了几個NavDestination)? HarmonyOS 鸿蒙Next
在NavDestination() {}.onReady里给this.pageStack赋值:
NavDestination() {}.onReady((context: NavDestinationContext) => {
this.pageStack = context.pathStack
})
在aboutToAppear里打印页面栈:
aboutToAppear(): void {
console.log('获取栈中所有NavDestination页面的名称', JSON.stringify(this.pageStack.getAllPathName()))
}
结果是空数组:
获取栈中所有NavDestination页面的名称 []
更多关于在NavDestination(){}.onReady里给this.pageStack赋值,在aboutToAppear里打印输出页面栈,页面栈列表为什么为空(前面已经跳转了几個NavDestination)? HarmonyOS 鸿蒙Next的实战教程也可以访问 https://www.itying.com/category-93-b0.html
不知道这样是否可以解决你的问题:
在Navigation先存pathStack
pathStack: NavPathStack = new NavPathStack();
aboutToAppear(): void {
AppStorage.setOrCreate("PathStack", this.pathStack)
}
Navigation(this.pathStack)
在NavDestination直接取
pathStack: NavPathStack = AppStorage.get("PathStack") as NavPathStack
aboutToAppear(): void {
console.log('获取栈中所有NavDestination页面的名称', JSON.stringify(this.pageStack.getAllPathName()))
}
更多关于在NavDestination(){}.onReady里给this.pageStack赋值,在aboutToAppear里打印输出页面栈,页面栈列表为什么为空(前面已经跳转了几個NavDestination)? HarmonyOS 鸿蒙Next的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
生命周期问题吧
1. 第一次显示时,先走aboutToAppear,打印出来是空的,下来才走onReady
2. 之后显示时,没有再走aboutToAppear回调了。
或者你把完整代码贴出来,包含pageStack变量的定义。
在HarmonyOS中,NavDestination
的onReady
回调是在目标页面准备就绪时触发的,而aboutToAppear
是在页面即将显示时触发的。你提到在onReady
中给this.pageStack
赋值,但在aboutToAppear
中打印页面栈时发现为空。可能的原因是页面栈的更新是异步的,onReady
回调时页面栈还未完全更新,导致在aboutToAppear
中打印时页面栈仍为空。此外,页面栈的管理可能受到页面生命周期和导航机制的影响,确保在正确的生命周期阶段访问页面栈。