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

鸿蒙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.lryc.cn/news/350913.html

相关文章:

  • ue引擎游戏开发笔记(45)——添加游戏音效
  • 202472读书笔记|《首先你要快乐,其次都是其次》——快乐至上,允许一切发生
  • 8.STL中Vector容器的常见操作(附习题)
  • 5.23小结
  • 文心一言 VS 讯飞星火 VS chatgpt (265)-- 算法导论20.1 4题
  • Flutter 中的 EditableText 小部件:全面指南
  • H800基础能力测试
  • 2024/5/24 Day38 greedy 435. 无重叠区间 763.划分字母区间 56. 合并区间
  • 【python】使用函数名而不加括号是什么情况?
  • 全文检索ElasticSearch简介
  • Github上传时报错The file path is empty的解决办法
  • Adobe Bridge BR v14.0.3 安装教程 (多媒体文件组织管理工具)
  • 嵌入式学习——3——TCP-UDP 数据交互,握手,挥手
  • 【LeetCode】【3】无重复字符的最长子串(1113字)
  • 溪谷联运SDK功能全面解析
  • Vitis HLS 学习笔记--控制驱动TLP - Dataflow视图
  • 蓝桥杯物联网竞赛_STM32L071KBU6_关于sizo of函数产生的BUG
  • Wpf 使用 Prism 实战开发Day22
  • 遍历列表
  • 创建vue工程、Vue项目的目录结构、Vue项目-启动、API风格
  • 为了更全面地分析开发人员容易被骗的原因和提供更加深入的防范措施
  • 虹科Pico汽车示波器 | 免拆诊断案例 | 2020款奔驰G350车行驶中急加速时发动机抖动
  • 大模型落地竞逐,云计算大厂“百舸争流”
  • 物体检测算法-R-CNN,SSD,YOLO
  • 区块链开发:区块链软件开发包装相关解析
  • 一个月速刷leetcodeHOT100 day07 轮转数组 除自身以外的乘积 找到字符串中所有字母异位词
  • Plotly数据可视化宝典
  • 由于找不到mfc140u.dll,无法继续执行代码如何解决
  • 卷积神经网络(CNN)详细介绍及其原理详解
  • kotlin基础之空指针检查、字符串表达式、函数默认值