鸿蒙组件生命周期详细解释
鸿蒙系统中的组件生命周期与传统的Web前端生命周期有所不同,主要分为以下几个阶段:
- aboutToAppear
- 在创建自定义组件的新实例后,在执行其 build 函数之前执行。
- 允许在此阶段改变状态变量,这些更改将在随后的 build 函数中生效。
- 用途:在这个阶段,开发者可以做一些初始化工作或者数据预加载,确保当组件呈现时,能够立即展示最新的数据或状态。
- aboutToDisappear
- 在自定义组件被销毁前执行。
- 不建议在此阶段改变状态变量,尤其是对 @Link 变量的修改可能导致应用行为不稳定。
- 用途:一些清除、注销、销毁工作可以在这个阶段执行。
- onPageShow
- 当页面显示时触发,包括路由切换、应用从后台转到前台等场景。
- 仅对带有 @Entry 修饰符的自定义组件生效。
- 用途:比如在有Tabs(TabContent)的页面组件中可以有妙用。
- onPageHide
- 当页面隐藏时触发,例如路由切换或应用从前台转到后台。
- 同样仅对带有 @Entry 修饰符的自定义组件生效。
- 用途:比如在有Tabs(TabContent)的页面组件中可以有妙用。
- onBackPress
- 当用户点击返回按钮时触发。
- 返回 true 表示页面自己处理返回逻辑,不进行页面路由;返回 false 表示使用默认的路由返回逻辑。
- 如果未设置返回值,默认视为 false。
- 用途:可以对退出操作做一些必要业务层上必要的拦截操作。
实现二次侧滑退出应用
了解完组件生命周期之后,我们如果想实现二次侧滑退出应用,就可以在onBackPress中这么写
// 当用户点击返回按钮时触发此方法
firstBackTimestamp: number = 0;
onBackPress(): boolean | void {
// 获取当前时间戳
let now = Date.now();
// 判断两次点击返回按钮的时间间隔是否大于2秒
if (now - this.firstBackTimestamp > 2000) {
// 提示用户再次点击将退出应用
ToastUtil.showToast('再按一次退出应用');
// 更新第一次点击的时间戳
this.firstBackTimestamp = now;
// 返回 true 表示页面自己处理返回逻辑
return true;
}
}