首先区分一下组件和页面的区别,我们新建一个项目,默认是带@Entry的, 这就是页面,如果是只有
@Component
struct Index
就是组件了
鸿蒙组件和页面生命周期的思维导图
因为@Entry 也是@Component组件,所以页面组件同时拥有自定义组件的生命周期
aboutToAppear应用场景:
aboutToAppear(): void {
//发送请求拿到数据
//拿到路由传参
}
aboutToDisappear应用场景:
aboutToDisappear(): void {
//清除定时器,延时器
//取消事件监听
}
onPageShow:
准备了一份小demo,模仿在页面给aboutToAppear和onPageShow 发送同一个请求的效果
@State num:number = 0
async aboutToAppear(){
//模拟发送请求拿到数据
await this.getData(2)
}
getData(n:number){
this.num += n
}
async onPageShow() {
await this.getData(3)
}
效果: 进入页面后 显示的数据是4 也就是aboutToAppear生效了,但是切换页面后切换回来,显示的是7 下一次是10 证明切换页面后 执行onPageShow ,不会再执行aboutToAppear
aboutToAppear和onPageShow的不同点:
"aboutToAppear" 发生在页面即将显示之前,
"onPageShow" 发生在页面显示之后.
所以面对我们需要即时更新数据的情况, 可以aboutToAppear写一份请求, onPageShow也写一份,这样用户在切换页面回来之后就可以看到最新的数据了。
aboutToDisApper 和 onPageHide的不同点
"aboutToDisappear" 通常指的是页面即将隐藏之前触发的事件,在这个阶段,页面仍然是可见的
"onPageHide" 则是指页面已经被隐藏的事件,在这个阶段,页面不再对用户可见
onBackPress
onBackPress,就是用户按下手机的返回键的时候
应用场景:
可以给用户增加弹窗,询问是否返回,如果是在一些需要保存数据的界面,例如购物清单这些,我们也可以给用户保存当前的数据