基础语法
在harmonyOs中每个ArkTs类似java语法中的一个class文件,@Componet声明一个组件,声明为组件就可以被其他类使用,通过struct的方式声明类。@Entry表示该自定义组件为入口组件,类似java的controller,声明之后就可以成为UI页面的入口,才能被用户访问看到。在arkts中如果需要声明变量需要@state 声明这为一个变量,类似java中的定义变量。
build函数中来声明UI架构,这一步就类似java中来声明方法,不同于java,build中的容器中每个方法都会执行,这里面只能使用方法,必须要都是方法或者其他组件,且必须唯一,类似java。声明方法使用@builder注解,创建一个方法,在主程序中就可以使用
@Entry
@Component
struct Index {
@State message: string = 'Hello World1';
@Builder
showTextBuilder() {
Text('Hello World')
.fontSize(30)
.fontWeight(FontWeight.Bold)
}
build() {
RelativeContainer() {
Text(this.message)
.id('HelloWorld')
.fontSize($r('app.float.page_text_font_size'))
.fontWeight(FontWeight.Bold)
.alignRules({
center: { anchor: '__container__', align: VerticalAlign.Center },
middle: { anchor: '__container__', align: HorizontalAlign.Center }
})
.onClick(() => {
this.message = 'Welcome';
})
}
.height('100%')
.width('100%')
}
}build中UI使用
使用声明式UI类似java的类,不使用new可以直接生成一个组件,很多时候我们生成一个类时会使用build🎍,那么我们就可以直接.方法依次注入属性值,在ArkTs中使用已有的组件都可以像java生成类一样注入变量,比如Text类,里面有大小,颜色等等,有无参构造方法,带参数的构造方法。是不是特别像java生成一个类的过程
// string类型的参数
Text('test')
// $r形式引入应用资源,可应用于多语言场景
Text($r('app.string.title_value'))
// 无参数形式
Text()
Text('test')
.fontSize(12)条件和循环
在build函数中是可以使用if来渲染,满足if条件的执行这个组件。
for循环渲染组件,使用ForEach,循环的列表,函数,id,分别为三个参数
ForEach(this.simpleList, (item: string) => {
ChildItem({ item: item })
}, (item: string) => JSON.stringify(item)) // 需要保证key唯一