HarmonyOS 鸿蒙Next 使用Navigation做页面跳转时A页面自定义组件生命周期方法
HarmonyOS 鸿蒙Next 使用Navigation做页面跳转时A页面自定义组件生命周期方法
其生命周期大致可分为三类,自定义组件生命周期、通用组件生命周期和自有生命周期。其中,aboutToAppear和aboutToDisappear是自定义组件的生命周期(NavDestination外层包含的自定义组件),OnAppear和OnDisappear是组件的通用生命周期。剩下的六个生命周期(onWillAppear 、onWillShow 、onShown、onWillHide、onHidden、onWillDisappear)为NavDestination独有。
参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/arkts-navigation-navigation-V13#%E9%A1%B5%E9%9D%A2%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F
更多关于HarmonyOS 鸿蒙Next 使用Navigation做页面跳转时A页面自定义组件生命周期方法的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
import { hilog } from '@kit.PerformanceAnalysisKit';
@Entry
@ComponentV2
struct Index {
private pathStack = new NavPathStack()
build() {
Navigation(this.pathStack) {
Column() {
Button(‘go child’)
.onClick(() => {
this.pathStack.pushPathByName(‘child’, null)
})
}.onVisibleAreaChange([1], (isShow) => {
hilog.debug(0x000000, ‘rainrain’, 'index isShow == ’ + isShow)
})
}.size({ width: ‘100%’, height: ‘100%’ })
.hideTitleBar(false)
.hideToolBar(false)
.navDestination(this.BuilderMap)
}
@Builder
BuilderMap(name: string) {
if (name == ‘child’) {
ChildPage()
} else {
ThirdPage()
}
}
}
@ComponentV2
struct ChildPage {
build() {
NavDestination() {
Column() {
Button('pop ').onClick(() => {
this.queryNavigationInfo()?.pathStack.pop()
})
Button(‘next’).onClick(() => {
this.queryNavigationInfo()?.pathStack.pushPathByName(‘third’, null)
})
}
}.size({ width: ‘100%’, height: ‘100%’ })
.onShown(() => {
hilog.debug(0x000000, ‘rainrain’, ‘child show’)
}).onHidden(() => {
hilog.debug(0x000000, ‘rainrain’, ‘child onHidden’)
})
}
}
@ComponentV2
struct ThirdPage {
build() {
NavDestination() {
Column() {
Button('pop ').onClick(() => {
this.queryNavigationInfo()?.pathStack.pop()
})
}
}.<span class="hljs-title function_">size</span>({ <span class="hljs-attr">width</span>: <span class="hljs-string">'100%'</span>, <span class="hljs-attr">height</span>: <span class="hljs-string">'100%'</span> })
.<span class="hljs-title function_">onShown</span>(<span class="hljs-function">() =></span> {
hilog.<span class="hljs-title function_">debug</span>(<span class="hljs-number">0x000000</span>, <span class="hljs-string">'rainrain'</span>, <span class="hljs-string">'Third show'</span>)
}).<span class="hljs-title function_">onHidden</span>(<span class="hljs-function">() =></span> {
hilog.<span class="hljs-title function_">debug</span>(<span class="hljs-number">0x000000</span>, <span class="hljs-string">'rainrain'</span>, <span class="hljs-string">'Third onHidden'</span>)
})
}
}
在HarmonyOS鸿蒙Next系统中,使用Navigation进行页面跳转时,A页面的自定义组件生命周期方法会按照组件的生命周期规范执行。具体表现如下:
-
onCreate:当组件被创建时调用,这是组件生命周期的开始。
-
onAttached:当组件被附加到窗口时调用,此时组件已经与界面关联。
-
onStart:当组件变为可见状态时调用,此时用户可以看到组件的UI。
-
onActive:当组件处于前台活动状态时调用,此时组件可以接收用户输入等交互。
-
onInactive:当组件失去前台活动状态但仍然可见时调用。
-
onEnd:当组件变为不可见状态时调用,此时用户已经看不到组件的UI。
-
onDetached:当组件从窗口分离时调用,此时组件与界面的关联被解除。
-
onDestroy:当组件被销毁时调用,这是组件生命周期的结束。
在A页面进行页面跳转时,如果A页面中的自定义组件被移除或隐藏,相应的生命周期方法(如onEnd、onDetached)将会被触发。如果跳转后A页面重新显示,相应的生命周期方法(如onStart、onActive)也会被再次调用。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html