浅谈鸿蒙组件和页面生命周期

326 阅读2分钟

首先区分一下组件和页面的区别,我们新建一个项目,默认是带@Entry的, 这就是页面,如果是只有

@Component
struct Index

就是组件了

image.png


鸿蒙组件和页面生命周期的思维导图

因为@Entry 也是@Component组件,所以页面组件同时拥有自定义组件的生命周期

smzq.png

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,就是用户按下手机的返回键的时候

应用场景:

可以给用户增加弹窗,询问是否返回,如果是在一些需要保存数据的界面,例如购物清单这些,我们也可以给用户保存当前的数据