#HarmonyOS:页面和自定义组件生命周期

页面生命周期

即被@Entry装饰的组件生命周期

  • onPageShow:页面每次显示时触发一次,包括路由过程、应用进入前台等场景。
  • onPageHide: 页面每次隐藏时触发一次,包括路由过程、应用进入后台等场景。
  • onBackPress: 当用户点击返回按钮是触发

组件生命周期

即一般用@Component装饰的自定义组件的生命周期

  • aboutToAppear:组件即将出现时回调该接口,具体时机为在创建自定义组件的新实例后,在执行其build()函数之前执行。
  • onDidBuild:组件在build()函数执行完成以后回调改接口,不建议在onDidBuild函数中更改状态变量、使用animateTo等功能,这可能会导致不稳定的UI表现。
  • aboutToDisappear:aboutToDisappear函数在定义组件销毁之前执行。不允许在aboutToDisappear函数中改变状态变量,特别是@Link变量的修改可能会导致程序行为不稳定。

生命周期图

在这里插入图片描述

示例代码

// Index.ets
import { router } from '@kit.ArkUI';

@Entry
@Component
struct MyComponent {
  @State showChild: boolean = true;
  @State btnColor:string = "#FF007DFF";

  // 只有被@Entry装饰的组件才可以调用页面的生命周期
  onPageShow() {
    console.info('Index onPageShow');
  }
  // 只有被@Entry装饰的组件才可以调用页面的生命周期
  onPageHide() {
    console.info('Index onPageHide');
  }

  // 只有被@Entry装饰的组件才可以调用页面的生命周期
  onBackPress() {
    console.info('Index onBackPress');
    this.btnColor ="#FFEE0606";
    return true // 返回true表示页面自己处理返回逻辑,不进行页面路由;返回false表示使用默认的路由返回逻辑,不设置返回值按照false处理
  }

  // 组件生命周期
  aboutToAppear() {
    console.info('MyComponent aboutToAppear');
  }

  // 组件生命周期
  onDidBuild() {
    console.info('MyComponent onDidBuild');
  }

  // 组件生命周期
  aboutToDisappear() {
    console.info('MyComponent aboutToDisappear');
  }

  build() {
    Column() {
      // this.showChild为true,创建Child子组件,执行Child aboutToAppear
      if (this.showChild) {
        Child()
      }
      // this.showChild为false,删除Child子组件,执行Child aboutToDisappear
      Button('delete Child')
        .margin(20)
        .backgroundColor(this.btnColor)
        .onClick(() => {
        this.showChild = false;
      })
      // push到page页面,执行onPageHide
      Button('push to next page')
        .onClick(() => {
          router.pushUrl({ url: 'pages/page' });
        })
    }
  }
}

@Component
struct Child {
  @State title: string = 'Hello World';
  // 组件生命周期
  aboutToDisappear() {
    console.info('[lifeCycle] Child aboutToDisappear');
  }

  // 组件生命周期
  onDidBuild() {
    console.info('[lifeCycle] Child onDidBuild');
  }

  // 组件生命周期
  aboutToAppear() {
    console.info('[lifeCycle] Child aboutToAppear');
  }

  build() {
    Text(this.title)
      .fontSize(50)
      .margin(20)
      .onClick(() => {
        this.title = 'Hello ArkUI';
      })
  }
}

以上示例中,Index页面包含两个自定义组件,一个是被@Entry装饰的MyComponent,也是页面的入口组件,即页面的根节点;一个是Child,是MyComponent的子组件。只有@Entry装饰的节点才可以使页面级别的生命周期方法生效,因此在MyComponent中声明当前Index页面的页面生命周期函数(onPageShow / onPageHide / onBackPress)。MyComponent和其子组件Child分别声明了各自的组件级别生命周期函数(aboutToAppear / onDidBuild/aboutToDisappear)。

应用冷启动的初始化流程为:MyComponent aboutToAppear --> MyComponent build --> MyComponent onDidBuild–> Child aboutToAppear --> Child build --> Child onDidBuild --> Index onPageShow。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/901714.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

自定义类型:联合和枚举【上】

自定义类型:数组,结构体,联合体,枚举。前面一些我们已经讲过了,接下来我们讲联合体和枚举。 一.联合体 1.联合体类型的声明 像结构体一样,联合体也是由一个或者多个成员构成,这些成员可以不同…

网络搜索引擎Shodan(2)

声明:学习视频来自b站up主 泷羽sec,如涉及侵权马上删除文章 声明:本文主要用作技术分享,所有内容仅供参考。任何使用或依赖于本文信息所造成的法律后果均与本人无关。请读者自行判断风险,并遵循相关法律法规。 感谢泷…

(南京观海微电子)——GH7006-01_HKC_B3-PV043WVQ-N80_MIPI_LVDS_RGB原理及代码介绍

1. 原理 2. 代码 /**************************************************/ // Model - GV050WVQ-N82 // IC - GH7006 // Width - 800 // Height - 480 // REV: - V01 // DATA - 20240621 // INTERFACE- LV…

4.1.2 网页设计技术

文章目录 1. 万维网(WWW)的诞生2. 移动互联网的崛起3. 网页三剑客:HTML、CSS和JavaScriptHTML:网页的骨架CSS:网页的外衣JavaScript:网页的活力 4. 前端框架的演变基于CSS的框架基于JavaScript的框架基于MV…

质量漫谈一

我知道很多同学看到这类问题,第一反应想要去寻找的就是作为测试角色,应该要如何如何去做?但是今天这里作为质量第一篇,不打算按照这样单角度去写,这类同学可以就此打住,如果在意的话,可关注后续…

excel斜线表头

检验数据验证对象 鼠标放在检验数据 验证对象中间,altenter 之后空格 选中格子,右键单元格格式, 完成 如果是需要多分割,操作一样,在画斜线的时候会有区别,在插入里面用直线画斜线即可 在表格插入的时…

采用Excel作为可视化设计器的开源规则引擎 NopRule

决策树和决策矩阵是业务人员可以直观理解的复杂IF-ELSE逻辑表达形式,也是规则引擎中最常用、最有用的部分。常见的规则引擎如Drools虽然提供了更加丰富的功能特性集, 特别是所谓的RETE算法可以用于高效复用多次重复出现的表达式片段,但在实际…

xxl-job java.sql.SQLException: interrupt问题排查

近期生产环境固定凌晨报错,提示 ConnectionManager [Thread-23069] getWriteConnection db:***,pattern: error, jdbcUrl: jdbc:mysql://***:3306/***?connectTimeout3000&socketTimeout180000&autoReconnecttrue&zeroDateTimeBehaviorCONVERT_TO_NUL…

Windows自带录屏好用吗?四大录屏工具轻松实现高效录屏!

Windows系统自带的录屏工具其实就是Xbox Game Bar。今天,除了这个工具,我还会为大家推荐几款实用录屏工具,让大家轻松实现高效录屏! 福昕录屏软件 直达链接:www.foxitsoftware.cn/REC/ 操作教程:立即获取…

本地缓存库分析(一):golang-lru

文章目录 本地缓存概览golang-lru标准lrulru的操作PutGet 2q:冷热分离lruPutGet expirable_lru:支持过期时间的lruPutGet过期 总结 本地缓存概览 在业务中,一般会将极高频访问的数据缓存到本地。以减少网络IO的开销,下游服务的压…

css 切角实现(全)

效果 样式代码 <template><div class"container"><div class"clip-all-angle"> 4个角全部剪切 </div><div class"clip-two-angle"> 切底部两个角 </div><div class"clip-two-top-angle"> …

1.2.2 算法的时间复杂度

那么我们如何评估算法的时间开销&#xff1f; 存在什么问题? 和机器性能有关&#xff0c;如:超级计算机 v.s. 单片机 和编程语言有关&#xff0c;越高级的语言执行效率越低 和编译程序产生的机器指令质量有关 有些算法是不能事后再统计的&#xff0c;如:导弹控制算法 能否事…

Spring Boot框架下的酒店住宿登记系统

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

PIL处理器在环测试

目录 PIL处理器在环测试介绍 PIL测试过程 编译模块 测试结果 PIL处理器在环测试介绍 SIL测试是验证代码和模型的一致性&#xff0c;代码运行在Windows平台上&#xff0c;某种程度上说&#xff0c;这并不能保证代码到目标处理器上的运行结果也能够和模型保持一致。所以&…

ctfshow的sql注入解题思路171-211

ctfshow-SQL注入 web171&#xff1a;爆库名->爆表名->爆字段名->爆字段值 -1 union select 1,database() ,3 -- //返回数据库名 -1 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema库名 -- //获取数据库里的表名 -…

【华为\荣耀、中兴、华三路由器IPV6设置】

华为\荣耀、中兴、华三路由器ipv6设置 华为\荣耀设置-路由器拨号情况下中兴设置-路由器拨号情况下华三设置-光猫拨号情况下&#xff08;待续&#xff09; 华为\荣耀设置-路由器拨号情况下 如图设置就行 中兴设置-路由器拨号情况下 中兴路由器有两个设置地方也是如图设置 …

一站式AI自动化剪辑 内置多种功能 永久免费

AI影视解说自动化剪辑工具&#xff0c;功能非常强大&#xff0c;吊打所有视频解说&#xff0c;解放双手&#xff0c;从我开始 【资源名称】&#xff1a;纳拉托艾 【资源大小】&#xff1a;1.27 【资源版本】&#xff1a;0.1 【测试机型】&#xff1a;Win11. 【资源介绍】&a…

基于SSM+小程序的智慧旅游平台登录管理系统(旅游2)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 旅游平台开发微信小程序功能有管理员和用户。 1、管理员功能有个人中心&#xff0c;用户管理&#xff0c;景点分类管理&#xff0c;旅游景点管理&#xff0c;景点购票管理&#xff0c;景…

Leetcode刷题笔记13

DP35 【模板】二维前缀和 【模板】二维前缀和_牛客题霸_牛客网 解法一&#xff1a;暴力解法 -> 模拟 直接算区间里面的和 每次询问都要遍历数组一遍 时间复杂度&#xff1a;O(n*m*q) 解法二&#xff1a;前缀和 1. 预处理出来一个前缀和矩阵 dp[i][j]表示&#xff1a;从[…

VisionPro Basic - 01- 有关应用和作业

前言&#xff1a; VP&#xff08;VisionPro&#xff09;的保存文件都是.vpp&#xff0c;所以&#xff0c;你在保存的时候&#xff0c;一定要注意区别。否则&#xff0c;过了几天&#xff0c;你都搞不清楚自己当年哪个的应用&#xff0c;哪个是作业... 环境&#xff1a; 例子1&…