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

news2024/9/21 12:27:33

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

目录标题

  • [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.coloradmin.cn/o/1872505.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python爬取中国天气网天气数据.

一、主题式网络爬虫设计方案 1.主题式网络爬虫名称 名称:Python爬取中国天气网天气数据 2.主题式网络爬虫爬取的内容与数据特征分析 本次爬虫主要爬取中国天气网天气数据 3.主题式网络爬虫设计方案概述(包括实现思路与技术难点) reques…

可以在Mac电脑玩的拳皇97 for Mac(KOF97) 支持M1

《拳皇97》(The King of Fighters 97)是一款由SNK公司制作的拳击格斗游戏,于1997年在Arcade平台发布,随后在多个游戏平台上推出。该游戏是《拳皇》系列的第三个作品,继承了前作《拳皇96》的“adius”系统,并…

Windows C盘清理指南:哪些文件可以删,哪些不能动?

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 文章内容 📒📝 可删除的文件类型📝 不能删除的文件类型📝 使用第三方工具📝 注意事项⚓️ 相关链接 ⚓️📖 介绍 📖 对于普通电脑用户来说,最令人困扰的问题之一就是电脑C盘满了。不仅导致系统运行缓慢,而且如果…

重磅!免费一键批量混剪工具它来了,一天上万短视频不是梦

很多做短视频营销的朋友需要批量生成大量的短视频,但是市面上的工具一是不好用,二是要收费。 今天给大家介绍一款免费的,可以自动化批量生成短视频的工具MoneyPrinterPlus。 同时支持windows和linux平台。 有了它,一天生成上万短…

2024年Nano编辑器最新使用教程

Nano在大多数Linux发行版中找到,易于使用,其最常用的命令显示在其屏幕底部。 作为编辑配置和其他文件是Linux中的一种普遍的任务,知道如何使用该程序是否可以非常有用。Nano编辑器以及如何使用Nano编辑器在服务器上编辑文件是我们将在本指南中…

“一团乱麻”到底什么是烟雾病呢?

当我们听到“烟雾病”这个名字时,可能会联想到与吸烟有关的疾病,但实际上,这是一种与吸烟毫无关系的罕见脑血管疾病。它的名字来源于在脑血管造影中,病变的血管网看起来像一团乱麻,又似吸烟时吐出的烟雾。 烟雾病&…

Arduino - Keypad 键盘

Arduino - Keypad Arduino - Keypad The keypad is widely used in many devices such as door lock, ATM, calculator… 键盘广泛应用于门锁、ATM、计算器等多种设备中。 In this tutorial, we will learn: 在本教程中,我们将学习: How to use key…

WPF----自定义滚动条ScrollViewer

滚动条是项目当中经常用到的一个控件&#xff0c;大部分对外项目都有外观的需求&#xff0c;因此需要自定义&#xff0c;文中主要是针对一段动态的状态数据进行展示&#xff0c;并保证数据始终在最新一条&#xff0c;就是需要滚动条滚动到底部。 1&#xff0c;xaml中引入 <…

【微服务】Alibaba Cloud Linux环境下Docker以及MySQL安装

部署Docker 1.安装dnf dnf是新一代的rpm软件包管理器 yum -y install dnf2.安装社区版Docker&#xff08;docker-ce&#xff09; 添加docker-ce的dnf源 dnf config-manager --add-repohttps://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo安装Alibaba Cloud…

【03】从0到1构建AI生成思维导图应用 -- Agent 搭建

【03】从0到1构建AI生成思维导图应用 – Agent 搭建 大家好&#xff01;最近自己做了一个完全免费的AI生成思维导图的网站&#xff0c;支持下载&#xff0c;编辑和对接微信公众号&#xff0c;可以在这里体验&#xff1a;https://lt2mind.zeabur.app/ 上一章&#xff1a;https…

Arduino - TM1637 4 位 7 段显示器

Arduino - TM1637 4 位 7 段显示器 Arduino-TM1637 4 位 7 段显示器 A standard 4-digit 7-segment display is needed for clock, timer and counter projects, but it usually requires 12 connections. The TM1637 module makes it easier by only requiring 4 connectio…

【yolov8系列】ubuntu上yolov8的开启训练的简单记录

前言 yolov8的广泛使用&#xff0c;拉取yolov8源码工程&#xff0c;然后配置环境后直接运行&#xff0c;初步验证自己数据的检测效果&#xff0c;在数据集准备OK的情况下 需要信手拈来&#xff0c;以保证开发过程的高效进行。 本篇博客更注意为了方便自己使用时参考。顺便也记录…

yolov5驾驶员不规范行为检测

1 项目介绍 1.1 摘要 随着汽车工业的迅速发展和交通拥堵的加剧&#xff0c;驾驶员在行车过程中的不规范行为成为了导致交通事故频发的重要因素之一。为了减少交通事故的发生&#xff0c;保障道路安全&#xff0c;提高驾驶员的行车安全意识&#xff0c;本研究致力于实现驾驶员…

深度学习Week18——学习残差网络和ResNet-50算法

文章目录 深度学习Week18——学习残差网络和ResNet-50算法 一、前言 二、我的环境 三、前期工作 1、配置环境 2、导入数据 2.1 加载数据 2.2 配置数据集 2.3 数据可视化 2.4 再次检查数据 四、构建ResNet-50网络模型 五、编译模型 六、训练模型 七、模型评估 八、指定图片预测 …

速通python!!!!!!!

生成验证码图片 创建一个随机字符串&#xff08;验证码&#xff09;并存储在会话&#xff08;session&#xff09;中&#xff0c;以便后续验证。使用Java的图形API&#xff08;如java.awt和javax.imageio&#xff09;来生成一个包含该随机字符串的图片。可以添加一些干扰元素&a…

20240627优雅草新产品取得原始软件著作权授权

https://doc.youyacao.com/22/2153 20240627优雅草新产品取得原始软件著作权授权 介绍 历程消息&#xff1a;优雅草2024年新产品最新取得原始著作权两份&#xff0c;2款产品将在近期完成为商业授权产品在蜻蜓松鼠官网售卖&#xff0c;本两款产品是智慧园区能源监测管理系统解…

Redis数据迁移-RedisShake

redis-shake是阿里云Redis团队开源的用于Redis数据迁移和数据过滤的工具。 一、基本功能 redis-shake它支持解析、恢复、备份、同步四个功能 恢复restore&#xff1a;将RDB文件恢复到目的redis数据库。 备份dump&#xff1a;将源redis的全量数据通过RDB文件备份起来。 解析deco…

通义灵码上线 Visual Studio 插件市场啦!

通义灵码&#xff0c;是阿里云出品的一款基于通义大模型的智能编码辅助工具&#xff0c;提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码优化、注释生成、代码解释、研发智能问答、异常报错排查等能力&#xff0c;提供代码智能生成、研发智能问答能力。 通义灵…

Appium+python自动化(二十九)- 模拟手指在手机上多线多点作战 - 多点触控(超详解)

简介 在网页中我们经常使用缩放操作来便利的查看具体的信息&#xff0c;在appium中使用MultiAction多点触控的类来实现。MultiAction是多点触控的类&#xff0c;可以模拟用户多点操作。主要包含加载add()和执行perform()两个方法. 问题思考 在使用地图App中&#xff0c;我们…

【高级篇】主从复制与高可用性:构建坚若磐石的数据库基础设施(十二)

引言 在上一章《备份与恢复》中,我们深入探讨了如何通过各种备份策略和恢复技术,确保数据的安全性和业务的连续性。然而,为了应对更大规模的业务挑战和灾难恢复需求,仅仅依靠备份是不够的。本章,我们将聚焦于MySQL的主从复制与高可用性技术,从原理到实践,从配置到优化,…