当前位置: 首页 > news >正文

HarmonyOS page生命周期函数讲解

下面 我们又要看一个比较重要的点了
页面生命周期

页面组件有三个生命周期
onPageShow 页面显示时触发
onPageHide 页面隐藏时触发
onBackPress 页面返回时触发

这里 我们准备两个组件
首先是 index.ets 参考代码如下

import router from '@ohos.router'
@Entry
@Component
struct Index {build() {Row() {Column() {Button("跳转").onClick(()=>{router.pushUrl({url: "pages/AppView"})})}.width('100%')}.height('100%')}//页面显示时触发onPageShow() {console.log("index onPageShow触发");}//页面隐藏时触发onPageHide() {console.log("index onPageHide触发");}//页面返回时触发onBackPress() {console.log("index onBackPress触发");}
}

我们引入了 router 路由模块 然后定义了三个生命周期
然后 设置了一个button按钮 点击跳转向 pages/AppView页面

然后 AppView.ets 参考代码如下

import router from '@ohos.router'
@Entry
@Component
struct AppView {build() {Column(){Button("返回").onClick(()=>{router.back();})}.width('100%').height('100%')}//页面显示时触发onPageShow() {console.log("AppView onPageShow触发");}//页面隐藏时触发onPageHide() {console.log("AppView onPageHide触发");}//页面返回时触发onBackPress() {console.log("AppView onBackPress触发");}
}

这里 我们也是先引入router
button按钮点击 调用 router.back 返回上一个界面
然后也定义了三个生命周期

然后 我们打开预览器 运行index组件 然后 index 组件 被显示 onPageShow生命周期随之触发
在这里插入图片描述
这里 需要注意 控制台下面有选择 我们要选log 才能看到 console.log打印的内容
默认启动的是 PreviewerLog 预览控制台
在这里插入图片描述
然后 我们点击跳转 它就会跳转到 AppView 界面
因为已经跳转 index 组件隐藏 onPageHide 触发 然后 AppView 页面显示 onPageShow触发
在这里插入图片描述
我们点击返回

调回 index界面 AppView被隐藏 触发onPageHide
index 显示触发 onPageShow
在这里插入图片描述
那么问题来了 onBackPress好像一直没触发呀

这个函数是页面返回时 触发 这里所说的返回不是说 router.back
而是手机App自带顶部的返回按钮
如下图指向的这种退出按钮 才会触发
在这里插入图片描述

相关文章:

  • 水准网、平面导线平差
  • 双击编辑el-table的单元格数据
  • 【ADB】电脑通过ADB向手机传输文件
  • Python 实现 PDF 到 Word 文档的高效转换(DOC、DOCX)
  • GET和POST请求
  • Linux驱动开发学习笔记6《蜂鸣器实验》
  • 智能优化算法应用:基于减法平均算法3D无线传感器网络(WSN)覆盖优化 - 附代码
  • 边缘计算网关:重新定义物联网数据处理
  • WPS中如何根据身份证号生成出生日期并排序
  • android studio官方网站关于android SDK环境变量的设置说明晦涩难懂
  • SQL server 数据库练习题及答案(练习3)
  • nodejs+vue+微信小程序+python+PHP的林业信息管理系统的设计与实现-计算机毕业设计推荐
  • 01.PostgreSQL基本SELECT语句
  • 小米电脑管家 - 手机平板电脑家居互联
  • 在markdown中添加视频的两种方法
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • Bytom交易说明(账户管理模式)
  • golang中接口赋值与方法集
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • Python实现BT种子转化为磁力链接【实战】
  • 从伪并行的 Python 多线程说起
  • 分布式熔断降级平台aegis
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 前端设计模式
  • 前端相关框架总和
  • 前端学习笔记之观察者模式
  • 深度学习在携程攻略社区的应用
  • 什么是Javascript函数节流?
  • 手机端车牌号码键盘的vue组件
  • 正则与JS中的正则
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • ​ssh免密码登录设置及问题总结
  • ​TypeScript都不会用,也敢说会前端?
  • (23)Linux的软硬连接
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (篇九)MySQL常用内置函数
  • (十六)一篇文章学会Java的常用API
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (转) Android中ViewStub组件使用
  • (转)菜鸟学数据库(三)——存储过程
  • (转)母版页和相对路径
  • (转)详解PHP处理密码的几种方式
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET C#版本和.NET版本以及VS版本的对应关系
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献