HarmonyOS TabContent页面生命周期不触发
TabContent页面生命周期不触发。
1. IDE官方模版创建出来的项目, entry/src/main/ets/pages/Index.ets里写了个tabs。
build() {
if (this.isLogin) {
MainTabs()
} else {
SMSAuthPage()
}
}
2. MainTabs代码:
import { RoadMapPage as HomePage } from '@jlgl/lesson';
import { MinePage } from '@jlgl/mine'
import { PurchasePage } from '@jlgl/purchase';
import { MainPage as SOETestPage} from '@jlgl/soe/src/main/ets/components/mainpage/MainPage'
@Component
export struct MainTabs {
private tab_name_home: string = '首页'
private tab_name_mine: string = '我的'
private tab_name_purchase: string = '购买'
@State selectedIndex: number = 0;
@Provide hideTabBars: boolean = false;
@Builder tabBuilder(title: string, index: number, selectedImag: Resource, normalImag: Resource) {
Column() {
Image(this.selectedIndex === index ? selectedImag : normalImag)
.objectFit(ImageFit.ScaleDown)
.size({width:40, height:40})
Text(title)
.fontSize(12)
.fontColor(this.selectedIndex === index ? $r('app.color.theme_tab_highlighted') : $r('app.color.theme_tab_normal'))
}
.width('100%')
.height(60)
.justifyContent(FlexAlign.Center)
}
build() {
Tabs({barPosition: BarPosition.End}) {
TabContent() {
HomePage()
}
.expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP])
.tabBar(this.tabBuilder(this.tab_name_home, 0, $r('app.media.icon_tab_study_active_new'), $r('app.media.icon_tab_study_default_new')))
TabContent() {
PurchasePage()
}.tabBar(this.tabBuilder(this.tab_name_purchase, 1, $r('app.media.icon_tab_purchase_active_new'), $r('app.media.icon_tab_purchase_default_new')))
TabContent() {
MinePage()
}.tabBar(this.tabBuilder(this.tab_name_mine, 2, $r('app.media.icon_tab_user_active_new'), $r('app.media.icon_tab_user_default_new')))
TabContent() {
SOETestPage()
}.tabBar(this.tabBuilder(this.tab_name_mine, 2, $r('app.media.icon_tab_user_active_new'), $r('app.media.icon_tab_user_default_new')))
}
.scrollable(false)
.expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP])
.barHeight(this.hideTabBars ? 0 : 56)
.animationDuration(0)
.onChange((index: number) => {
console.info('change index ', index)
this.selectedIndex = index
})
}
}
3. HomePage跳转到二级页面再回来,生命周期函数不触发。
生命周期函数:
aboutToReuse(params: Record<string, ESObject>) {
}
aboutToAppear(): void {
}
onPageShow(): void {
}
跳转函数:
router.pushNamedRoute({
name: 'LessonDetailPage',
params: {
lessonId: params.get('id')
}
})
二级页面回退函数:
router.back()
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
HarmonyOS 页面生命周期问题
297浏览 • 1回复 待解决
HarmonyOS 生命周期不触发
276浏览 • 1回复 待解决
HarmonyOS navigation主页面生命周期
848浏览 • 1回复 待解决
HarmonyOS 是否有支持应用生命周期、页面生命周期、组件生命周期Hook的API?
623浏览 • 0回复 待解决
HarmonyOS TabContent的生命周期不受NavDestination页面压栈而触发
277浏览 • 1回复 待解决
TabContent 内容的生命周期
760浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何监听页面生命周期变化?
522浏览 • 1回复 待解决
通过Navigation触发的页面跳转,目标页面的生命周期函数不执行
184浏览 • 1回复 待解决
HarmonyOS 生命周期回调触发
345浏览 • 1回复 待解决
旋转屏幕,如何防止界面生命周期重启
2306浏览 • 1回复 待解决
HarmonyOS 页面跳转时,生命周期函数没有触发
182浏览 • 1回复 待解决
HarmonyOS 使用Navigation,如何在页面栈跳转中获取页面生命周期
207浏览 • 1回复 待解决
#鸿蒙通关秘籍#鸿蒙页面生命周期接口的调用顺序
524浏览 • 2回复 待解决
#鸿蒙通关秘籍#ArkUI中的自定义组件生命周期和页面生命周期有什么区别?
486浏览 • 1回复 待解决
HarmonyOS页面生命周期无感监听返回的页面名称是否会重名
677浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在Navigation中实现页面生命周期的监听?
439浏览 • 1回复 待解决
HarmonyOS Navigation跳转新页面生命周期初始化问题
558浏览 • 1回复 待解决
HarmonyOS navdestination的生命周期,与页面和组件生命周期的关系
454浏览 • 1回复 待解决
HarmonyOS 用NavDestination做路由的页面,onPageShow生命周期不会触发
139浏览 • 1回复 待解决
#鸿蒙通关秘籍#鸿蒙应用和页面生命周期函数使用详解
435浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙开发中监听页面生命周期事件?
448浏览 • 1回复 待解决
HarmonyOS 页面组件的生命周期、自定义组件生命周期监听问题
372浏览 • 1回复 待解决
FA模型中旋转屏幕,如何防止界面生命周期重启
474浏览 • 1回复 待解决
HarmonyOS navigation页面息屏和激活生命周期不走
145浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS NEXT中使用ArkUI的页面生命周期方法?
443浏览 • 1回复 待解决
1、请参考自定义组件的生命周期文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-custom-component-lifecycle-V5#abouttoappear
2、可以结合组件可见区域变化事件使用。参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-universal-component-visible-area-change-event-V5
1中的文档有表明生命周期函数调用的条件:
aboutToAppear:在创建自定义组件的新实例后,在执行其build()函数之前执行。子组件仅第一次会创建。
onPageShow:页面每次显示时触发一次,包括路由过程、应用进入前台等场景,仅@Entry装饰的自定义组件生效。