鸿蒙HarmonyOS开发框架—ArkTS语言(基本语法 三)_实验三 arkts基础语法

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数HarmonyOS鸿蒙开发工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年HarmonyOS鸿蒙开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img

img
img
htt

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上HarmonyOS鸿蒙开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注鸿蒙获取)
img

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

}

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

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

}
}

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

build() {
Text(this.title).fontSize(50).onClick(() => {
this.title = ‘Hello ArkUI’;
})
}
}


复制


以上示例中,Index页面包含两个自定义组件,一个是被@Entry装饰的MyComponent,也是页面的入口组件,即页面的根节点;一个是Child,是MyComponent的子组件。只有@Entry装饰的节点才可以生效页面的生命周期方法,所以MyComponent中声明了当前Index页面的页面生命周期函数。MyComponent和其子组件Child也同时也声明了组件的生命周期函数。


* 应用冷启动的初始化流程为:MyComponent aboutToAppear --> MyComponent build --> Child aboutToAppear --> Child build --> Child build执行完毕 --> MyComponent build执行完毕 --> Index onPageShow。
* 点击“delete Child”,if绑定的this.showChild变成false,删除Child组件,会执行Child aboutToDisappear方法。
* 点击“push to next page”,调用router.pushUrl接口,跳转到另外一个页面,当前Index页面隐藏,执行页面生命周期Index onPageHide。此处调用的是router.pushUrl接口,Index页面被隐藏,并没有销毁,所以只调用onPageHide。跳转到新页面后,执行初始化新页面的生命周期的流程。
* 如果调用的是router.replaceUrl,则当前Index页面被销毁,执行的生命周期流程将变为:Index onPageHide --> MyComponent aboutToDisappear --> Child aboutToDisappear。上文已经提到,组件的销毁是从组件树上直接摘下子树,所以先调用父组件的aboutToDisappear,再调用子组件的aboutToDisAppear,然后执行初始化新页面的生命周期流程。
* 点击返回按钮,触发页面生命周期Index onBackPress。最小化应用或者应用进入后台,触发Index onPageHide。这两个状态下应用都没有被销毁,所以并不会执行组件的aboutToDisappear 。应用回到前台,执行Index onPageShow。
* 退出应用,执行Index onPageHide --> MyComponent aboutToDisappear --> Child aboutToDisappear。


#### @Builder装饰器:自定义构建函数


前面章节介绍了如何创建一个自定义组件。该自定义组件内部UI结构固定,仅与使用方进行数据传递。ArkUI还提供了一种更轻量的UI元素复用机制@Builder,@Builder所装饰的函数遵循build()函数语法规则,开发者可以将重复使用的UI元素抽象成一个方法,在build方法里调用。


为了简化语言,将@Builder装饰的函数也称为“自定义构建函数”。


##### 装饰器使用说明


###### 自定义组件内自定义构建函数


定义的语法:



@Builder myBuilderFunction({ … })


复制


使用方法:



this.myBuilderFunction({ … })


复制


* 允许在自定义组件内定义一个或多个自定义构建函数,该函数被认为是该组件的私有、特殊类型的成员函数。
* 自定义构建函数可以在所属组件的build方法和其他自定义构建函数中调用,但不允许在组件外调用。
* 在自定义函数体中,this指代当前所属组件,组件的状态变量可以在自定义构建函数内访问。建议通过this访问自定义组件的状态变量而不是参数传递。


###### 全局自定义构建函数


定义的语法:



@Builder function MyGlobalBuilderFunction({ … })


复制


使用方法:



MyGlobalBuilderFunction()


复制


* 全局的自定义构建函数可以被整个应用获取,不允许使用this和bind方法。
* 如果不涉及组件状态变化,建议使用全局的自定义构建方法。


##### **参数传递规则**


自定义构建函数的参数传递有按值传递和按引用传递两种,均需遵守以下规则:


* 参数的类型必须与参数声明的类型一致,不允许undefined、null和返回undefined、null的表达式。
* 在自定义构建函数内部,不允许改变参数值。如果需要改变参数值,且同步回调用点,建议使用@Link。
* @Builder内UI语法遵循UI语法规则。


###### 按引用传递参数


按引用传递参数时,传递的参数可为状态变量,且状态变量的改变会引起@Builder方法内的UI刷新。ArkUI提供$$作为按引用传递参数的范式。



ABuilder( $$ : { paramA1: string, paramB1 : string } );


复制



@Builder function ABuilder(KaTeX parse error: Can't use function '$' in math mode at position 70: …arByReference: $̲{.paramA1} `)
}
}
@Entry
@Component
struct Parent {
@State label: string = ‘Hello’;
build() {
Column() {
// 在Parent组件中调用ABuilder的时候,将this.label引用传递给ABuilder
ABuilder({ paramA1: this.label })
Button(‘Click me’).onClick(() => {
// 点击“Click me”后,UI从“Hello”刷新为“ArkUI”
this.label = ‘ArkUI’;
})
}
}
}


复制


###### 按值传递参数


调用@Builder装饰的函数默认按值传递。当传递的参数为状态变量时,状态变量的改变不会引起@Builder方法内的UI刷新。所以当使用状态变量的时候,推荐使用按引用传递。



@Builder function ABuilder(paramA1: string) {
Row() {
Text(UseStateVarByValue: ${paramA1} )
}
}
@Entry
@Component
struct Parent {
label: string = ‘Hello’;
build() {
Column() {
ABuilder(this.label)
}
}
}




---


最后,为了能让大家更好的去学习提升鸿蒙 (Harmony OS) 开发技术,小编连夜整理了一份30个G**纯血版**学习资料(含**视频**、**电子书**、**学习文档**等)以及一份在Github上持续爆火霸榜的《纯血版华为鸿蒙 (Harmony OS)开发手册》(共计890页),希望对大家有所帮助。


## 纯血版鸿蒙 HarmonyOS 4.0 视频学习资料


![](https://img-blog.csdnimg.cn/direct/96278e452e0c4e148a9719152582e3f8.png)


![](https://img-blog.csdnimg.cn/direct/055da709c34041b8b65194f344718ab3.png)


 需要以上视频学习资料小伙伴


请点击→[纯血版全套鸿蒙HarmonyOS学习资料]( )




---


## 《纯血版华为鸿蒙 (Harmony OS)开发手册》


这份手册涵盖了当前鸿蒙 (Harmony OS) 开发技术必掌握的核心知识点


#### 纯血版鸿蒙 (Harmony OS)开发手册部分精彩内容


**HarmonyOS 概念:**


* 系统定义
* 技术架构
* 技术特性
* 系统安全


![](https://img-blog.csdnimg.cn/direct/180561508b094d7db5a414156dc9a832.png)



**如何快速入门?**


* 基本概念
* 构建第一个ArkTS应用
* 构建第一个JS应用
* ……


![](https://img-blog.csdnimg.cn/direct/df693f7a4a9a4c439ce1644cb35061e2.png)  
**开发基础知识:** 


* 应用基础知识
* 配置文件
统定义
* 技术架构
* 技术特性
* 系统安全


![](https://img-blog.csdnimg.cn/direct/180561508b094d7db5a414156dc9a832.png)



**如何快速入门?**


* 基本概念
* 构建第一个ArkTS应用
* 构建第一个JS应用
* ……


![](https://img-blog.csdnimg.cn/direct/df693f7a4a9a4c439ce1644cb35061e2.png)  
**开发基础知识:** 


* 应用基础知识
* 配置文件
  • 20
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值