HarmonyOS 鸿蒙Next NavDestination作为根容器的页面添加了@Entry为什么没有走页面的生命周期

发布于 1周前 作者 songsunli 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next NavDestination作为根容器的页面添加了@Entry为什么没有走页面的生命周期

//index.ets
[@Entry](/user/Entry)
@Component
struct Index {
@Provide('pageInfos') pageInfos: NavPathStack = new NavPathStack()
isLogin: boolean = false;

@Builder
PagesMap(name: string) {
if (name == 'Page01') {
Page01()
} else if (name == 'Dialog01') {
Dialog01()
}
}

build() {
Navigation(this.pageInfos) {
Button('push Page01')
.width('80%')
.onClick(() => {
this.pageInfos.pushPathByName('Page01', '');
})
}
.mode(NavigationMode.Stack)
.titleMode(NavigationTitleMode.Full)
.title('主页')
.navDestination(this.PagesMap)
}
}

//test.ets
[@Entry](/user/Entry)
@Component
export struct Page01 {

@Consume('pageInfos') pageInfos: NavPathStack;

build() {
NavDestination() {
Button('push Page01')
.width('80%')
.onClick(() => {
this.pageInfos.pushPathByName('Page01', '');
})
.margin({top: 10, bottom: 10})
Button('push Dialog01')
.width('80%')
.onClick(() => {
this.pageInfos.pushPathByName('Dialog01', '');
})
.margin({top: 10, bottom: 10})
}
.title('Page01')
}

onPageShow(): void {
console.info("yxl-onpageshow")
}

onPageHide(): void {
console.info("yxl-onpagehide")
}
}

更多关于HarmonyOS 鸿蒙Next NavDestination作为根容器的页面添加了@Entry为什么没有走页面的生命周期的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复
使用navigation跳转的页面不会走onPageShow生命周期,设计如此

onPageShow仅[@Entry](/user/Entry)装饰的自定义组件生效。https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/ts-custom-component-lifecycle-V13#onpageshow

更多关于HarmonyOS 鸿蒙Next NavDestination作为根容器的页面添加了@Entry为什么没有走页面的生命周期的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


因为Page1 是做为component加到Nav里的。不走Router那一套周期。NavDestination()里有生命周期相关的onShown和onHide

在HarmonyOS中,如果你为Next NavDestination作为根容器的页面添加了@Entry注解,但页面的生命周期没有被正常触发,可能的原因包括:

  1. 配置问题:确保config.json中已正确配置该页面的路由信息,并且确保@Entry注解所指定的路径与config.json中定义的路径一致。

  2. 容器初始化:检查根容器Next NavDestination是否正确初始化,并且确保页面被正确添加到容器中。如果容器初始化有误,可能导致页面无法正常加载,进而不触发生命周期。

  3. 页面实例问题:确认页面实例是否被正确创建和管理。如果页面实例创建失败或未被正确管理,生命周期方法将不会被调用。

  4. 系统缓存:有时系统缓存可能导致更新后的代码未被立即加载。尝试清除应用缓存或重启设备看是否能解决问题。

  5. 版本兼容:确保你的开发环境和HarmonyOS系统版本支持当前使用的特性。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部