鸿蒙OS开发实例:【装饰器-@BuilderParam】

 背景

这是一个基础概念,其实没有什么原因,练习过程中,自然可以感受到其用法,后期加上真实项目的演练,会形成习惯

功能核心理念

“在自定义组件中添加一个点击跳转操作。若直接在组件内嵌入事件方法,将会导致所有引入该自定义组件的地方均增加了该功能。为解决此问题,ArkUI引入了@BuilderParam装饰器”

这样的场景在任何平台任何公司都会遇到,是否采用在公共组件中定义某个功能还是在外部定义某个功能,都是取决于实际业务场景发生的概率。

@BuilderParam 要告知是:HarmonyOS有应对这样的机制

鸿蒙OS开发更多内容↓点击HarmonyOS与OpenHarmony技术
鸿蒙技术文档开发知识更新库gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md在这。或+mau123789学习,是v喔

核心代码

@Entry
@Component
struct BuilderParam2Index {label: string = 'Parent'@Builder GlobalBuilder1($$: { label: string }) {Text(`${this.label}`).fontColor(Color.White)Text($$.label).fontColor(Color.White).width('100%').height(50).backgroundColor(Color.Green)}build() {Column({ space: 30 }) {//一. 通过参数初始化组件BuilderParamChild2({ aBuilder1: this.GlobalBuilder1 })BuilderParamChild2({ label: 'Child', aBuilder1: this.GlobalBuilder1 })//二. 通过尾随闭包初始化组件, 如果组件中包含两个及以上@BuilderParam函数,则无法使用此种初始化方式BuilderParamChild2(){}BuilderParamChild2({ label: 'Child' }) {}BuilderParamChild2({ label: 'Child' }) {this.GlobalBuilder1({ label: 'global Builder label2' })}BuilderParamChild2({ label: 'Child' }) {Text('自定义初始化文字').fontColor(Color.Orange)}}.width('100%').height('100%').padding({ top: px2vp(111) }).alignItems(HorizontalAlign.Center).justifyContent(FlexAlign.Center)}
}@Component
struct BuilderParamChild2 {label: string = "Child"// 有参数类型,指向的GlobalBuilder1也是有参数类型的方法@BuilderParam aBuilder1: ($$: { label: string }) => void;build() {Column() {Text('BuilderParamChild').fontColor(Color.Red)this.aBuilder1({ label: 'global Builder label' })}.width('100%').backgroundColor(Color.Green)}
}

我们程序员都知道学习开发技术,最先是从语言学起,鸿蒙语言有TS、ArkTS等语法,那么除了这些基础知识之外,其核心技术点有那些呢?下面就用一张整理出的鸿蒙学习路线图表示:

从上面的OpenHarmony技术梳理来看,鸿蒙的学习内容也是很多的。现在全网的鸿蒙学习文档也是非常的少,下面推荐一些:完整内容可在头像页保存,或这qr23.cn/AKFP8k甲助力

内容包含:《鸿蒙NEXT星河版开发学习文档》

  • ArkTS
  • 声明式ArkUI
  • 多媒体
  • 通信问题
  • 系统移植
  • 系统裁剪
  • FW层的原理
  • 各种开发调试工具
  • 智能设备开发
  • 分布式开发等等。

这些就是对往后开发者的前景分享,希望大家多多点赞关注喔!

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

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

相关文章

电商系列之优惠券

> 插:AI时代,程序员或多或少要了解些人工智能,前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 坚持不懈,越努力越幸运,大家…

python解决序列重叠问题

tblastn比对出来候选HSP区段,我们需要根据一定的基因长度范围来进行区域延伸去重叠,然后进行下一步操作。对HSP区域的延伸要考虑基因的长度以及目标基因组scafflod or chromosome长度,不是一件容易的事情。 这里采用了dataclass以及改写slot…

安全上网,防止上网被记录(v2ray实现加密通信)

近期听一位亲威说,她在公司休闲的时候上了哪个网站,浏览了过的网站IT部门的人都会知道,这是因为现在大多数网络设备,像路由与交换机都有记录访问网站地址记录功能,涉及还可以设置成记录到交互的内容。要想保密&#xf…

【QT学习笔记】目录 (不定时更新)

解析 Qt消息机制和事件 Qt消息机制和事件--2 qt::WA_QuitOnClose 类库及用法 QString::number用法_qstring::number表示整数 emit用法 QString用法 QFile 用法 QPair用法 | 如何定义一个函数返回两个值 QFileDialog用法(选择文件弹出框) QFileI…

js 分割号查找内容

如果您想要在JavaScript中使用分隔符查找字符串中的内容,您可以使用String.prototype.split方法来分割字符串,然后使用数组的相关方法来查找特定内容。 以下是一个简单的例子,它使用逗号作为分隔符,查找字符串数组中的特定内容&a…

java openCV4-专栏目录

专栏简介 💒个人主页 📖说明📖本专栏为java openCV的入门专栏 openCV4.x 目录 📢前言📢场景🐼附言📖目录 📢前言 本专栏所有示例采用openCV4.8.0版本,你也可以采用其它…

MySQL面试汇总(一)

MySQL 如何定位慢查询 如何优化慢查询 索引及其底层实现 索引是一个数据结构,可以帮助MySQL高效获取数据。 聚簇索引和非聚簇索引 覆盖索引 索引创建原则 联合索引

AcWing 92. 递归实现指数型枚举

Problem: AcWing 92. 递归实现指数型枚举 文章目录 思路解题方法复杂度Code 思路 这是一个经典的递归问题,我们需要实现指数型枚举。这意味着我们需要找出所有可能的组合。在这个问题中,我们需要找出1到n的所有可能的组合。 解题方法 我们使用一个递归函…

Linux系统-----------MySQL 数据类型

目录 MySQL 数据类型 一、数值类型 二、日期和时间类型 三、字符串类型 (1)CHAR类型 (2)VARCHAR类型 (3)CHAR和VARACHAR的比较及其应用场景 MySQL 数据类型 MySQL 中定义数据字段的类型对你数据库的…

代码随想录 Day-25

力扣题目 509.斐波那契数 思路 很理所当然的,可以使用递归的方式其次是用动态规划的方式,动态规划的核心就是递推公式。 那么递推和递归一字之差,有什么区别呢?(递推和递归的区别) 1、递归 class Solutio…

Karmada 管理有状态应用 Xline 的早期探索与实践

背景与动机 目前随着云原生技术和云市场的不断成熟,越来越多的 IT 厂商开始投入到跨云多集群的怀抱当中。以下是 flexera 在 2023 年中关于云原生市场对多云多集群管理的接受程度的调查报告(http://info.flexera.com) 从 flexera 的报告中可…

软件杯 深度学习 机器视觉 人脸识别系统 - opencv python

文章目录 0 前言1 机器学习-人脸识别过程人脸检测人脸对其人脸特征向量化人脸识别 2 深度学习-人脸识别过程人脸检测人脸识别Metric Larning 3 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习 机器视觉 人脸识别系统 该项目…

算法训练day51Leetcode139.单词拆分 多重背包了解 背包问题总结

139.单词拆分 . - 力扣(LeetCode) 题目分析 初始化:初始化一个布尔型向量dp,大小为s.size() 1,所有值初始化为false,除了dp[0]被设置为true。这个布尔数组代表字符串s[0..i]能否通过拼接字典中的单词来形…

CMT(Cross Modal Transformer)实验环境搭建

项目地址:https://github.com/junjie18/CMT 论文地址:https://arxiv.org/pdf/2301.01283.pdf 环境:Ubuntu 20.04、cuda 11.1、python 3.8 1.创建虚拟环境CMT conda create -n CMT python3.8 -y conda activate CMT2.安装pytorch的GPU版本&am…

U盘惊变:文件夹竟成应用程序?数据恢复全攻略!

一、U盘突发异状:文件夹秒变应用程序 在数字化时代,U盘作为便携存储设备,在日常生活和工作中扮演着重要角色。然而,近期不少用户反映,他们的U盘突然出现了诡异的现象:原本整齐划一的文件夹图标&#xff0c…

STM32G473之flash存储结构汇总

STM32G4系列单片机,为32位的微控制器,理论上其内部寄存器地址最多支持4GB的命名及查找(2的32次方,地址命名为0x00000000至0xFFFFFFFF)。STM32官方对4GB的地址存储进行编号时,又分割成了8个block区域&#x…

vulnhub靶场之driftingblues-3

一.环境搭建 1.靶场描述 get flags difficulty: easy about vm: tested and exported from virtualbox. dhcp and nested vtx/amdv enabled. you can contact me by email for troubleshooting or questions. This works better with VirtualBox rather than VMware 2.靶场…

Markdown 编辑器使用

CSDN 在博客开头加上 [TOC](你的目录标题)就可以根据博客内容自动生成如下所示的目录: 你的目录标题 Markdown 编辑器功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表无序列表…

代码设计原则

目录 软件设计的本质设计模式的六大原则设计模式的三种模式框架设计 软件设计的本质 开闭原则,核心是高内聚,低耦合 设计模式的六大原则 单一职责原则:就一个类而言,应该仅有一个引起它变化的原因开闭原则:对扩展开…