首页 > 其他分享 >HarmonyOS学习(二) ArkTS 基础知识

HarmonyOS学习(二) ArkTS 基础知识

时间:2023-12-16 18:55:19浏览次数:19  
标签:ArkTS 自定义 Text 基础知识 HarmonyOS fontSize 组件 UI 装饰

HarmonyOS学习(二) ArkTS 基础知识

一、ArkTS介绍

ArkTS是HarmonyOS应用的开发语言,在TypeScript的基础上拓展了声明式UI、状态管理等相应的能力,让开发者以更简洁自然的方式开发高性能应用。TypeScript是JavaScript的拓展,ArkTS是TypeScript的拓展。

 

二、声明式UI规范

下图为 ArkTS 声明式开发规范的主要内容

 

 1、装饰器

用来装饰类、结构、方法以及变量,赋予其特殊的含义。如上图中的 @Entry、@Component、@State 都是装饰器。多个装饰器可以叠加到目标元素上,定义在同一行或多行分开。

@Entry :表示当前是个入口组件

@Component:表示这个是个自定义组件

@State:表示组件中的状态变量,次状态变化会引起UI的变化

 

 2、自定义组件

可复用的UI组件,可组合其他的组件。也可以被其他组件调用。

自定义组件可以基于struct实现,不能有继承关系,对于struct的实例化,可以省略new。如上图的 struck Hello 就是一个自定义组件。

自定义组件的生命周期:

aboutToAppear

aboutToAppear 函数在创建自定义组件的新实例后,在执行其build()函数之前执行。允许在aboutToAppear函数中改变状态变量,更改将在后续执行build()函数中生效。

aboutToDisappear

aboutToDisappear函数在自定义组件析构销毁之前执行。不允许在aboutToDisappear函数中改变状态变量,特别是@Link变量的修改可能会导致应用程序行为不稳定。

onPageShow

页面每次显示时触发一次,包括路由过程、应用进入前台等场景,仅@Entry装饰的自定义组件生效。

onPageHide

页面每次隐藏时触发一次,包括路由过程、应用进入前后台等场景,仅@Entry装饰的自定义组件生效。

onBackPress

当用户点击返回按钮时触发,仅@Entry装饰的自定义组件生效。

 

2、UI描述

声明式的方式来描述UI的结构,如上图中的 build() 方法内的代码块。自定义组件必须定义 Build() 函数,并且禁止自定义构造函数。

 

4、内置组件

框架中默认内置的基础和布局组件,可直接被开发者调用,如上图示例中的 Column、Text、Divider、Button,另外还有Row、Image等内置组件。内置组件又可以区分为基础组件和容器组件

 

无参数构造配置

如果组件的接口定义中不包含必选构造参数,组件后的“()”中不需要配置任何内容。如 Divider组件

Column() {
    Text('item 1')
    Divider()
    Text('item 2')
Image('xxx.jpg')
}

必选参数构造配置

如果组件的接口定义中包含必选构造参数,则在组件后面的“()”中必须配置响应的参数,参数可以使用常量进行赋值。如上面代码中的 Text、Image。

 

5、事件配置

用于添加组件对事件的响应逻辑,统一通过事件方法进行设置,如跟随在Button后面的onClick(),通过"."运算符连接。

使用lambda表达式配置组件事件方法

Button("add")
    .onClick(() => {
       this.counter ++ 
    })

使用匿名函数表达式配置组件的事件方法,要求使用bind,以确保匿名函数体重的this引用包含的组件

Button("add")
    .onClick(function() {
       this.counter ++ 
    }.bind(this))

使用组件的成员函数配置组件的事件方法

addClick(): void {
    this.counter ++
}

Button("add")
    .onClick(this.addClick)

 

6、属性配置

用于组件属性的配置,统一通过属性方法进行设置,如fontSize()、width()、height() 等,可通过链式调用的方式设置多项属性。

配置 Text 组件的字体大小:

Text('test')
    .fontSize(12)

除了使用常量参数外,还可以传递变量或表达式:

Image("paly.jpg")
    .width(this.count % 2 === 0 ? 100 : 200)
    .height(this.offset + 10)

同时框架还内置了一些枚举类型供开发人员使用,如颜色和字体粗细。

Text('test')
    .fontSize(12)
    .fontWeight(FontWeight.Bold)
    .fontColor(Color.Blue)

 

7、子组件配置

对于支持子组件配置的组件,例如容器组件,在“{...}”里为组件添加组件的UI描述。Column、Row、Stack、Grid、List等都是容器组件。

以最简单的Column为例

Column() {
  Text("Hello")
    .fontSize(20)
  Divider()
  Text(this.ame)
    .fontSize(24)
    fontColor(Color.Red)
}

容器组件之间也可以相互嵌套

Column() {
  Row() {
    Text("MyName")
      .fontSize(20)
    Divider()
    Text(this.ame)
      .fontSize(24)
      fontColor(Color.Red)
  }
  Diveder()
  Row() {
    Text("Age")
      .fontSize(20)
    Divider()
    Text(this.age)
      .fontSize(24)
      fontColor(Color.Blue)
  }  
}

 

三、组件状态管理装饰器和@Buiklder装饰器

组件状态管理装饰器用来管理组件中的状态,他们分别是:@State、@Prop、@Link

@State装饰的变量是组件内部的状态数据,当这些状态数据被修改时,将会调用做在组建的build方法进行UI刷新。

@Prop与@State有着相同的语义,但初始化方式不同。@Prop装饰的变量必须使用其父组件提供的@State变量进行初始化,允许组件内部修改@Prop变量,但更改不会通知给父组件,即@Prop属于单向数据绑定。

@Link装饰的变量可以和父组件的@State变量建立双向数据绑定,需要注意的是:@Link变量不能在组件内部进行初始化。

@State、@Prop和@Link 三者关系图

@Builder 装饰的函数称为自定义构建函数,装饰的方法用于定义组件的声明式UI描述,在一个自定义组件内快速生成多个布局内容。 

 

标签:ArkTS,自定义,Text,基础知识,HarmonyOS,fontSize,组件,UI,装饰
From: https://www.cnblogs.com/leoxuan/p/17902650.html

相关文章

  • 基础知识之上传与下载
    缘起上传和下载是两个经典场景,做项目的时候遇到了这两种情况。上传设置上传按钮constupoadImgCom=()=>{return(<><labelclassName={styles["upload-button"]}htmlFor="fileInputCompanyLogo">+</label><input......
  • 【HarmonyOS】如何实现entry模块页面跳转HSP共享包页面(API9)
    【关键字】API9、ArkTS、跨包路由跳转、entry模块页面跳转HSP共享包页面 【写在前面】本篇文章主要介绍使用API9ArkTS开发鸿蒙应用时,如何实现从entry模块或feature模块页面,跳转到HSPlibrary模块的页面。 【开发步骤】第一步:在API9Stage模型的工程中,【右键-New-Module......
  • 纯粹+享受,独立开发者成功踏上HarmonyOS“新大陆”
    李尚儒,97年,独立开发者,已成功开发了“日升月落”“日出日落时间”“每日咖啡”“腕上阅读器”等多款应用/元服务。从2019年敲下第一行代码,到打造出深受千万用户喜爱的应用/元服务,李尚儒的开发之旅充满了探索与创新。HarmonyOS操作系统的崛起,更为李尚儒提供了一片“新天地”。在这......
  • HarmonyOS 实战小项目开发(二)
    HarmonyOS实战小项目开发(二)日常逼逼叨在上期实战项目一中,已经对于练手项目的背景,后端搭建等做了一定的简述,那么本期将结合HarmonyOS页面搭建个人性格测试的移动端。如有一些错误,希望观众老爷们批评指正......
  • HarmonyOS:使用MindSpore Lite引擎进行模型推理
     场景介绍MindSpore Lite是一款AI引擎,它提供了面向不同硬件设备AI模型推理的功能,目前已经在图像分类、目标识别、人脸识别、文字识别等应用中广泛使用。本文介绍使用MindSpore Lite推理引擎进行模型推理的通用开发流程。基本概念在进行开发前,请先了解以下概念。张量:它......
  • Java基础知识概览总结
    1.Java语法数据类型:Java中的基本数据类型包括整型、浮点型、字符型和布尔型,而引用类型包括类、接口和数组等。变量和常量:使用关键字var、final和static声明变量和常量。运算符:包括算术运算符、比较运算符、逻辑运算符和位运算符等。控制流程:使用条件语句(if-else、switch)、循环......
  • HarmonyOS 实战小项目开发(一)
    HarmonyOS实战小项目开发(一)日常逼逼叨在经过一周多的Harmonyos开发基础知识的学习后,自己通过对于Harmonyos基础知识的学习之后,结合自己的一些想法,独自完成了利用Arkts布局的Harmonyos项目,在此将整个过程与各位共享出来,如有一些错误,希望观众老爷们批评指正......
  • I2S基础知识
    I2S(Inter-ICSound)总线,又称集成电路内置音频总线,是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准。采用了独立的导线传输时钟与数据信号的设计,通过将数据和时钟信号分离,避免了因时差诱发的失真。I2S总线特点如下:支持全双工和半双工模式;支持主、从模式。1、......
  • HarmonyOS学习(一) TypeScript 基础语法
    HarmonyOS学习(一)TypeScript基础语法一、基础类型1、布尔型booleanletisEnd:boolean=false;2、数字number//十进制2023letdecLiteral:number=2023;//二进制2023letbinaryLiteral:number=0b11111100111;//八进制2023letoctalLiteral:number=0o37......
  • DevEco Studio 鸿蒙(HarmonyOS)项目结构
    DevEcoStudio鸿蒙(HarmonyOS)项目结构一、操作环境操作系统: Windows10专业版IDE:DevEcoStudio3.1SDK:HarmonyOS3.1编辑二、项目结构创建简单的HelloWorld移动应用项目结构如下图编辑由上到下说明各个文件夹的作用.hvigor:存储构建配置文件信息。.idea:存储项目的配置信息。A......