鸿蒙HarmonyOS开发中的易混点归纳-持续补充中

相关文章目录

鸿蒙HarmonyOS开发术语全解:小白也能看懂!


文章目录

  • 相关文章目录
  • 前言
  • 一、build()函数和@Builder装饰器?
  • 二、自定义组件和系统组件(内置组件)
  • 三、组件和页面
  • 四、自定义弹窗和其他弹窗
  • 总结


前言


一、build()函数和@Builder装饰器?

  • build()函数:build()函数用于定义自定义组件的声明式UI描述,自定义组件必须定义build()函数。

  • @Builder:更轻量的UI元素复用机制,@Builder所装饰的函数遵循build()函数语法规则,开发者可以将重复使用的UI元素抽象成一个方法,在build方法里调用。为了简化语言,我们将@Builder装饰的函数也称为“自定义构建函数”。

二、自定义组件和系统组件(内置组件)

在ArkUI中,UI显示的内容均为组件,其中框架直接提供的被称为系统组件。
而由开发者定义的则称为自定义组件。
在进行UI界面开发时,通常不仅仅是简单地将系统组件进行组合使用,还需要考虑诸如代码可复用性、业务逻辑与UI的分离以及后续版本演进等因素。因此,将UI和部分业务逻辑封装成自定义组件至关重要。

自定义组件具备以下特点:

  • 可组合:开发者可以灵活地将系统组件、它们的属性以及方法组合使用,创建出丰富多样的UI界面。
  • 可重用:自定义组件具有很高的复用性,可以被其他组件重复利用,并作为不同的实例在不同的父组件或容器中使用,从而提高开发效率。
  • 数据驱动UI更新:自定义组件支持通过状态变量的改变来驱动UI的刷新,实现动态的数据展示和交互效果。

三、组件和页面

明确自定义组件和页面的关系:

自定义组件:使用@Component装饰的UI单元,通过组合多个系统组件实现UI的复用,并且可以调用组件的生命周期方法。

页面:即应用的UI页面,由一个或多个自定义组件组成。使用@Entry装饰的自定义组件作为页面的入口组件,即页面的根节点。每个页面只能有一个@Entry装饰的组件。只有被@Entry装饰的组件才能调用页面的生命周期方法。

页面生命周期(即被@Entry装饰的组件生命周期)提供以下生命周期接口:

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

组件生命周期(即使用@Component装饰的自定义组件的生命周期)提供以下生命周期接口:

  • aboutToAppear:组件即将出现时回调,发生在创建自定义组件的新实例后,执行其build()函数之前。
  • aboutToDisappear:组件析构销毁之前执行。不允许在此函数中改变状态变量,特别是@Link变量的修改,可能会导致应用程序行为不稳定。

生命周期流程(仅展示被@Entry装饰的组件/页面生命周期)大致如下:

(注:由于文本描述中未提供具体的流程图,此处无法展示流程图。请根据实际流程图进行解释。)

根据生命周期流程,我们可以从自定义组件的初始创建、重新渲染和删除来详细解释:

自定义组件的创建和渲染流程:

  1. 自定义组件的实例由ArkUI框架创建。
  2. 通过本地默认值或构造方法传递参数来初始化自定义组件的成员变量,初始化顺序为成员变量的定义顺序。
  3. 如果开发者定义了aboutToAppear方法,则在组件即将出现时执行该方法。
  4. 在首次渲染时,执行build方法渲染系统组件。如果子组件为自定义组件,则创建子自定义组件的实例。首次渲染过程中,框架会记录状态变量和组件的映射关系,以便在状态变量改变时驱动相关组件刷新。
  5. 当应用在后台启动时,由于应用进程并未销毁,因此仅需要执行页面的onPageShow生命周期方法。

四、自定义弹窗和其他弹窗

  • 自定义弹窗(CustomDialog)
    用于广告、中奖、警告、软件更新等与用户交互响应操作。开发者可以通过CustomDialogController类显示自定义弹窗。
  • 日期滑动选择器(DatePicker)
    根据指定范围的Date创建可以选择日期的滑动选择器。
  • 时间滑动选择器弹窗(TimePicker)
    时间选择组件,根据指定参数创建选择器,支持选择小时及分钟。
  • 文本滑动选择器弹窗(TextPickerDialog)
    根据指定的选择范围创建文本选择器,展示在弹窗上
  • 列表选择弹窗(ActionSheet)
  • 警告弹窗(AlertDialog)
    在这里插入图片描述

总结

持续更新中

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

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

相关文章

一个通过ADC采集NTC热敏电阻的温度传感器

前言: 如何设计一个电路,使用具有逐次逼近寄存器(SAR)模数转换器(ADC)的热敏电阻直接监测温度呢?温度传感电路需要使用负温度系数(NTC)热敏电阻与电阻器串联形成分压器,监测-25C至100C的温度范围。分压器具有产生与监测的温度成反比的输出电压的效果。电阻器分压器的…

Flink 高可用之StandAlone-HA模式(一)

obManager存在单点故障(SPOF:Single Point Of Failure),因此对Flink做HA,主要是对JobManager做HA,根据Flink集群的部署模式不同,分为Standalone、OnYarn,本文主要涉及Standalone模式…

R语言数据分析案例-巴西固体燃料排放量预测与分析

1 背景 自18世纪中叶以来,由于快速城市化、人口增长和技术发展,导致一氧化二氮(N2O)、 甲烷(CH4)和二氧化碳(CO 2)等温室气体浓度急剧上升,引发了全球变暖、海平面上 升…

别说废话!说话说到点上,项目高效沟通的底层逻辑揭秘

假设你下周要在领导和同事面前汇报项目进度,你会怎么做?很多人可能会去网上搜一个项目介绍模板,然后按照模板来填充内容。最后,汇报幻灯片做了 80 页,自己觉得非常充实,但是却被领导痛批了一顿。 这样的境…

景源畅信电商:抖店怎么提高店铺的权重?

在竞争激烈的电商市场,如何提升抖店店铺权重成为商家关注的焦点。店铺权重是决定商品搜索排名的关键因素之一,直接关系到店铺流量和销量。提高店铺权重并非一蹴而就,而是一个系统工程,需要从多个维度着手优化。 一、优化商品标题和…

(二)vForm 动态表单设计器之下拉、选择

系列文章目录 (一)vForm 动态表单设计器之使用 目录 系列文章目录 前言 一、后端需提供接口 二、组件配置 总结 前言 动态表单下拉、选择等组件,大概率要使用数据库中的数据,那么vForm如何拿到数据库中的数据呢?跟随…

Java ( 框架界面 , 按钮 , 动作监听ActionListener ,鼠标监听MouseListener,键盘监听KeyListener)的使用方法

package 拼图阶段任务.ui;import javax.swing.*; import java.awt.*; import java.awt.event.*;public class UseMethod {public static void main(String[] args) { // 框架的用法JFrame jf new JFrame();// 设置界面的宽高jf.setSize(603,680);// 设置界面的标题jf.setTitle…

Linux: network: send 失败的时候要不要close socket?

最近遇到一个例子,说有zerowindow出现;出现的原因是接收方的CPU被其他程序吃光,导致socket的read函数处理非常慢。说明接收端的接收缓存不够用。发送端自然而然的要停止发送。 但是如果在接收方的recv buff,以及发送方的send buf…

智能车竞赛指南:从零到一,驶向自动驾驶的未来

智能车竞赛指南:从零到一,驶向自动驾驶的未来 一、智能车竞赛概览1.1 竞赛介绍1.2 竞赛分类 二、智能车开发技术基础2.1 硬件平台2.2 软件开发 三、实战案例:循线小车开发3.1 系统架构3.2 代码示例 四、技术项目:基于ROS的视觉导航…

PersonalLLM——探索LLM是否能根据五大人格特质重新塑造一个新的角色?

1.概述 近年来,大型语言模型(LLMs),例如ChatGPT,致力于构建能够辅助人类的个性化人工智能代理,这些代理以进行类似人类的对话为重点。在学术领域,尤其是社会科学中,一些研究报告已经…

Nacos 进阶篇---Nacos服务端怎么维护不健康的微服务实例 ?(七)

一、引言 在 Nacos 后台管理服务列表中,我们可以看到微服务列表,其中有一栏叫“健康实例数” (如下图),表示对应的客户端实例信息是否可用状态。 那Nacos服务端是怎么感知客户端的状态是否可用呢 ? 本章…

JAVA 中 HTTP 基本认证(Basic Authentication)

目录 服务端这么做服务端告知客户端使用 Basic Authentication 方式进行认证服务端接收并处理客户端按照 Basic Authentication 方式发送的数据 客户端这么做如果客户端是浏览器如果客户端是 RestTemplat如果客户端是 HttpClient 其它参考 服务端这么做 服务端告知客户端使用 …

Unity数据持久化2——XML

简介: 基础知识 XML文件格式 XML基本语法 XML属性 练习: C#读取存储XML XML文件存放位置 读取XML文件 练习: 存储修改XML文件 练习: 总结 实践小项目 必备知识点 必备知识点——C#中XML序列化 必备知识点——C#中XML反序列化 必备…

5.23-

回顾 I0多路复用的原理? 程序首先向操作系统发起一个IO多路复用请求,告诉操作系统需要监视哪些IO通道。这些IO通道可以包括网络套接字、文件描述符等操作系统随后会将这些IO通道放入一个队列中,并在某个IO通道就绪时(如数据到达、文件可读…

Servlet的request对象

request对象的继承关系 1.HttpServletRequest接口继承了ServletRequest接口,对其父接口进行了扩展,可以处理满足所有http协议的请求 2.HttpServletRequest和ServletRequest都是接口,不能创建对象,因此在tomcat底层定义实现类并创…

Mysql总结1

Mysql常见日志 (1)错误日志:记录数据库服务器启动、停止、运行时存在的问题; (2)慢查询日志:记录查询时间超过long_query_time的sql语句,其中long_query_time可配置,且…

Python 机器学习 基础 之 数据表示与特征工程 【单变量非线性变换 / 自动化特征选择/利用专家知识】的简单说明

Python 机器学习 基础 之 数据表示与特征工程 【单变量非线性变换 / 自动化特征选择/利用专家知识】的简单说明 目录 Python 机器学习 基础 之 数据表示与特征工程 【单变量非线性变换 / 自动化特征选择/利用专家知识】的简单说明 一、简单介绍 二、单变量非线性变换 三、自…

园区网的基本了解

园区网使用的典型技术---IEEE802.3标准/IEEE802.11标准 封闭式园区网络 ---由内部人员使用,不能访问互联网。 ---制订各式各样的规章制度 ---NAC,网络接入控制 开放式园区网络 ---服务于公众的,认证 园区网的发展 第一代:…

驱动未来:IT行业的现状与发展趋势

前言 随着技术的不断进步,IT行业已成为推动全球经济和社会发展的关键力量。从云计算、大数据、人工智能到物联网、5G通信和区块链,这些技术正在重塑我们的生活和工作方式。本文将探讨IT行业的现状和未来发展趋势,并邀请行业领袖、技术专家和…

如何理解kmp的套娃式算法啊?

概念 KMP算法,全称Knuth Morris Pratt算法 。文章大部分内容出自《数据结构与算法之美》 核心思想 假设主串是a,模式串是b 在模式串与主串匹配的过程中,当遇到不可匹配的字符的时候,对已经对比过的字符,是否能找到…