鸿蒙(HarmonyOS)应用开发——生命周期、渲染控制、状态管理装饰器

生命周期

任何程序都是有一定的生命周期的。生命周期是记录从产生到销毁的过程;如果熟悉前端vue.js的话,就可以很好的理解生命周期。

自定义组件生命周期

ArkTS中,自定义组件提供了两个生命周期函数:aboutToAppear()aboutToDisappear();由于生命周期函数是由系统来确定他调用的时机,所以无法手动调用回调函数
aboutToAppear(): 在build函数之前执行对数据进行初始化
aboutToDisappear():销毁时调用
在这里插入图片描述

@Component
export struct TitleComponent{@Link isRefreshData: boolean;message: string = 'Hello World111'build() {Row() {Column() {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)}.width('100%').onClick(()=>{this.isRefreshData=!this.isRefreshData})}}aboutToAppear(){}aboutToDisappear(){}
}

页面入口组件

被@Entry 装饰的组件,系统还额外提供了三个函数:onPageShow()、onBackPress()、onPageHide();
onPageShow: 软件进入页面时执行
onBackPress:返回时执行
onPageHide:按手机home键返回手机主界面执行
在这里插入图片描述

渲染控制

条件渲染

使用if/else if /else 进行条件渲染

@Component
export struct TitleComponent{@Link isRefreshData: boolean;message: string = 'Hello World111'build() {Row() {Column() {if(this.isRenderText()){Text(this.message+"111")}else{Text(this.message)}}}}isRenderText(){return false;}
}

循环渲染

使用ForEach 迭代数组,并为每个数组项创建响应的组件;ForEach语法:
ForEach([],子组件的生成函数,键值生成器)

@Component
export struct TitleComponent{@Link isRefreshData: boolean;message: string = 'Hello World111'dataList:[]=[];build() {Row() {Column() {if(this.isRenderText()){Text(this.message+"111")}else{Text(this.message)}}}}@Builder genList(){Column(){List(){ForEach(this.dataList,(item:RankModel,index?:Number)=>{},(item:RankModel)=>JSON.stringify(item))}}}isRenderText(){return false;}
}

组件状态管理装饰器和@Builder装饰器

@State

组件内部的状态数据

@Prop

与@State有相同的语义,但初始化方式不同;
@Prop装饰的变量必须使用其父组件的@State变量进行初始化,允许组件内部修改,但更改不会通知给父组件

@Link

可以和父组件@State 变量建立双向数据绑定

@Builder

用于定义组件的声明式UI描述,在一个自定义组件内快速生成多个布局内容

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

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

相关文章

【数据集】全网最全的常见已公开医学影像数据集

目录 一,极市医学数据集汇总 1.CT 医学图像 ​编辑 2.恶性与良性皮肤癌 3.白内障数据集 4.胸部 X 光图像(肺炎) 5.用于图像增强的内窥镜真实合成曝光过度和曝光不足帧 6.医学家 7.乳房组织病理学图像 8.皮肤癌 MNIST:HA…

cephadm部署ceph quincy版本

环境说明 IP主机名角色 存储设备 192.168.2.100 master100 mon,mgr,osd,mds,rgw 大于5G的空设备192.168.2.101node101mon,mgr,osd,mds,rgw大于5G的空设备192.168.2.102node102mon,mgr,osd,mds,rgw大于5G的空设备 关闭防火墙 关闭并且禁用selinux 配置主机名/etc/hosts …

JAVA之异常详解

1. 异常的概念与体系结构 1.1 异常的概念 在Java中,将程序执行过程中发生的不正常行为称为异常 1. 算术异常 public class Test {public static void main(String[] args) {System.out.println(10/0);} } 因为 0 不能当被除数,所以报出了异常&#…

JSP宾馆预定管理系统数据库设计过程ER图

**Hi**,今天给大家带来一款使用JSP和Servlet开发的宾馆预定管理系统的论文写作指导。需要使用本项目写文档的童鞋可以好好看看文末附项目的效果查看地址哦~ 一、项目功能 具体的功能看下面这张表,表里面只是截取了主要功能来说的。 员工角色管理员角色员…

JS事件代理(事件委托)

JS事件代理(事件委托) 前言什么是事件代理事件代理的优点 事件代理实例代码实例: 总结 前言 本文详细讲解JavaScript中关于事件代理技术相关的内容以及源码实例的讲解。那么好,本文正式开始 什么是事件代理 事件代理作为JavaSc…

Spring6.x对调度和异步执行的注解支持

Spring为任务调度和异步方法执行提供注解支持。 1 启用Scheduling注解 要启用 Scheduled 和 Async ,在 Configuration 类(或者在启动类)添加 EnableScheduling 和 EnableAsync,如下: Configuration EnableAsync Ena…

Nacos身份绕过漏洞复现(QVD-2023-6271)

Nacos身份绕过漏洞复现(QVD-2023-6271) 环境配置 该漏洞主要用了win10_JAVA的环境,参考网上已有的复现文章,使用jdk-11.0.2_windows-x64_bin.exe 由于2.2.0之后的nacos已将本漏洞修复,所以本次复现使用2.2.0的包 下…

使用CMake交叉编译Arm Linux程序

下载安装aarch64-linux-gnu-gcc arm交叉编译工具链 apt-get install aarch64-linux-gnu-gccapt-get install aarch64-linux-gnu-gcc创建编译目录构建makefle 注意,工具链文件的指定一定要紧跟cmake命令之后,不能放到 … 后面构建arm架构cmake mkdir arm…

力软vue前端开发:使用params跳转传参404问题解决

问题描述 this.$router.push({ name: page, query: { id: 001 } }) // 根据路由名称 query 的方式跳转传参 使用query传参时,参数会拼接在链接后,点击搜索条件链接参数也还在。用户需要重新进入搜索页面。 所以,使用nameparams进行传参。参…

【JavaEE】多线程 (1)

目录 1. 认识线程(Thread) 1) 线程是什么 2) 为啥要有线程 3) 进程和线程的区别 2.第⼀个多线程程序 3.多线程的其他创建方式 方法二:实现 Runnable 接⼝ 方法三:匿名内部类 方法四:实现Runable, 重写run, 匿名内部类 方法五:使用lambda表达式…

带你用uniapp从零开发一个仿小米商场_2.创建空白项目及公共样式引入

创建空白项目 打开uniapp 点击新建->项目 如下, 是编辑你项目的名字的地方是你项目存放地址,可以点击浏览器去文件管理里面选地址是模板选择,这里选择默认模板就好是一些其他选择比如uvue能让你项目在编译成软件时运行更快,unicloud能让你用js写后端,且直接就是云开发,g…

Selenium+Pytest自动化测试框架实战

📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…

Linux命令(132)之sshpass

linux命令之sshpass 1.sshpass介绍 linux命令sshpass是用来实现非交换的ssh操作 2.sshpass用法 sshpass [参数] command sshpass参数 参数说明-p指定明文密码 3.实例 3.1.sshpass安装 默认系统中没有sshpass命令,需要安装sshpass rpm包 命令: y…

量化交易:筹码理论的探索-筹码分布计算的实现

前言 很多朋友习惯了同花顺、大智慧等看盘软件,经常问到筹码分布如何计算。 说起来筹码分布的理论在庄股时代堪称是一个划时代产品,虽然历经level2数据、资金流统计、拆单算法与反拆单算法等新型技术的变革,庄股时代也逐渐淡出市场&#xf…

掌握3个Mock工具,轻松玩转单元测试

公司要求提升单元测试的质量,提高代码的分支覆盖率和行覆盖率,安排我研究单元测试,指定方案分享并在开发部普及开。 单元测试中的Mock的目的 Mock的主要目的是让单元测试Write Once, Run Everywhere. 即编写一次后,可以在任意时…

第十九章 解读利用pytorch可视化特征图以及卷积核参数(工具)

介绍一种可视化feaature maps以及kernel weights的方法 推荐可视化工具TensorBoard:可以查看整个计算图的数据流向,保存再训练过程中的损失信息,准确率信息等 学习视频: 使用pytorch查看中间层特征矩阵以及卷积核参数_哔哩哔哩…

Calling PeopleTools APIs 调用PeopleTools API

Calling PeopleTools APIs 调用PeopleTools API You can call all of the PeopleTools APIs from an Application Engine program. When using APIs, remember that: 您可以从应用程序引擎程序调用所有PeopleTools API。使用API时,请记住: All the PeopleTools …

【机器学习】算法性能评估常用指标总结

考虑一个二分问题,即将实例分成正类(positive)或负类(negative)。对一个二分问题来说,会出现四种情况。如果一个实例是正类并且也被 预测成正类,即为真正类(True positive&#xff0…

计算两个经纬度之间的实际距离(Haversine公式)----c++

来源:https://www.open-open.com/lib/view/open1430573897802.html 原理亦可参考:https://blog.csdn.net/gaocuisheng/article/details/126060795 #include <cmath> #define EARTH_RADIUS 6371.0;// 地球半径&#xff0c;单位千米static double HaverSin(double theta…

文献速递:人工智能在新生儿重症监护室:现在是时候了

人工智能在新生儿重症监护室&#xff1a;现在是时候了 01 文献速递介绍 文章介绍了AI的多学科特性&#xff0c;包括计算机科学、数学、神经科学和哲学。AI的目标是通过各种计算和算法技术创建智能机器。尽管早期对人类水平AI的预测未能实现&#xff0c;但对AI的期待仍然强烈…