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

【鸿蒙学习笔记】页面和自定义组件生命周期

官方文档:页面和自定义组件生命周期

目录标题

  • [Q&A] 都谁有生命周期?
  • [Q&A] 什么是组件生命周期?
    • [Q&A] 什么是组件?
    • 组件生命周期
  • [Q&A] 什么是页面生命周期?
    • [Q&A] 什么是页面?
    • 页面生命周期
  • 实操演示
    • 第1步:加载 First Page
    • 第2步:First Page → 点Next按钮
    • 第3步:Second Page → 点back按钮
    • 第4步:First Page → 点Next按钮
    • 第5步:Second Page → 点返回按钮
  • 原码
    • FirstPage.ets
    • SecondPage.ets
    • main_pages.json

[Q&A] 都谁有生命周期?

1・组件生命周期
2・页面生命周期

[Q&A] 什么是组件生命周期?

[Q&A] 什么是组件?

1・ 自定义组件即@Component装饰的UI单元。个人理解: 用 @Component 声明组件
2.被@Component装饰的组件便可以调用组件的生命周期个人理解: 组件有自己的回调函数

组件生命周期

aboutToAppear:实例创建后,在执行其build()函数之前执行。
onDidBuild:组件build()函数执行完成之后回调该接口。
aboutToDisappear:实例销毁前。

[Q&A] 什么是页面生命周期?

[Q&A] 什么是页面?

1・页面即@Entry装饰应用的UI页面。可以由一个或者多个自定义组件组成。个人理解: UI页面包含多个UI单元,合理合法不需要解释
2・@Entry装饰的自定义组件为页面的入口组件,即页面的根节点。个人理解: 用 @Entry 声明页面
3・只有被@Entry装饰的组件才可以调用页面的生命周期个人理解: 页面有自己的回调函数

页面生命周期

onPageShow:页面显示时执行
onPageHide:页面隐藏时执行
onBackPress:点击返回键执行

实操演示

在这里插入图片描述

第1步:加载 First Page

app Log: FirstPage----------aboutToAppear1
app Log: FirstPage----------onPageShow1

第2步:First Page → 点Next按钮

app Log: FirstPage----------onPageHide1
app Log: FirstPage----------aboutToAppear2
app Log: FirstPage----------onPageShow2

第3步:Second Page → 点back按钮

app Log: FirstPage----------onPageHide2
app Log: FirstPage----------onPageShow1
app Log: FirstPage----------aboutToDisappear2

第4步:First Page → 点Next按钮

app Log: FirstPage----------onPageHide1
app Log: FirstPage----------aboutToAppear2
app Log: FirstPage----------onPageShow2

第5步:Second Page → 点返回按钮

app Log: FirstPage----------onBackPress2
app Log: FirstPage----------onPageHide2
app Log: FirstPage----------onPageShow1
app Log: FirstPage----------aboutToDisappear2

原码

FirstPage.ets

import { router } from '@kit.ArkUI'@Entry
@Component
struct FirstPage {@State message: string = 'First Page';build() {Row() {Column() {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)Button('Next').onClick(() => {router.pushUrl({url: "pages/SecondPage"})})}.width('100%')}.height('100%')}aboutToAppear(): void {console.log("FirstPage----------aboutToAppear1")}aboutToDisappear(): void {console.log("FirstPage----------aboutToDisappear1")}onPageShow(): void {console.log("FirstPage----------onPageShow1")}onPageHide(): void {console.log("FirstPage----------onPageHide1")}onBackPress(): boolean | void {console.log("FirstPage----------onBackPress1")}
}

SecondPage.ets

import { router } from '@kit.ArkUI'@Entry
@Component
struct SecondPage {@State message: string = 'Second Page';build() {Row() {Column() {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)Button("Back").onClick(() => {router.back()})}.width('100%')}.height('100%')}aboutToAppear(): void {console.log("FirstPage----------aboutToAppear2")}aboutToDisappear(): void {console.log("FirstPage----------aboutToDisappear2")}onPageShow(): void {console.log("FirstPage----------onPageShow2")}onPageHide(): void {console.log("FirstPage----------onPageHide2")}onBackPress(): boolean | void {console.log("FirstPage----------onBackPress2")}
}

main_pages.json

{"src": ["pages/Index","pages/FirstPage","pages/SecondPage"]
}
http://www.lryc.cn/news/385754.html

相关文章:

  • ASPICE与ISO 21434:汽车软件与网络安全标准的协同与互补
  • 视频格式转换方法:如何使用视频转换器软件转换视频
  • vim操作小诀窍:快速多行添加注释
  • 无线麦克风领夹哪个牌子好,2024年领夹麦克风品牌排行榜推荐
  • Mybatis入门——语法详解:基础使用、增删改查、起别名、解决问题、注释、动态查询,从入门到进阶
  • 仓库选址问题【数学规划的应用(含代码)】阿里达院MindOpt
  • Docker Compose 一键快速部署 RocketMQ
  • Vscode lanuch.json
  • Golang开发:构建支持并发的网络爬虫
  • 2024年跨境电商关键数据统计:市场规模将达到1.976万亿美元
  • 联想至像M3070DNA打印机加粉及清零方法
  • 通过nginx去除 api url前缀 并保持后面剩余的url不变向后台请求
  • AI技术在现代社会中的广泛应用及其影响
  • VBA 批量变换文件名
  • OpenHarmony 5.0 纯血鸿蒙系统
  • 计算机网络地址划分A-E(自学)
  • js导入导出
  • python办公自动化之excel
  • 生命在于学习——Python人工智能原理(2.5.1)
  • visual studio 2022配置和使用jsoncpp
  • Spring Boot中的动态数据源切换
  • npm error code EUNSUPPORTEDPROTOCOL 解决
  • 基于改进天鹰优化算法(IAO)优化支持向量机(SVM)数据分类预测(IAO-SVM)
  • 【数学建模】—【Python库】—【Numpy】—【学习】
  • C语言一些逆置算法
  • CentOS7安装MongoDB
  • python笔记----少儿编程课程
  • RabbitMQ实践——搭建单人聊天服务
  • GPT-5
  • Vip-智能预估+大数据标签+人群全选=用户分群!