基础语法

  1. 在harmonyOs中每个ArkTs类似java语法中的一个class文件,@Componet声明一个组件,声明为组件就可以被其他类使用,通过struct的方式声明类。@Entry表示该自定义组件为入口组件,类似java的controller,声明之后就可以成为UI页面的入口,才能被用户访问看到。在arkts中如果需要声明变量需要@state 声明这为一个变量,类似java中的定义变量。

  2. 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使用

  1. 使用声明式UI类似java的类,不使用new可以直接生成一个组件,很多时候我们生成一个类时会使用build🎍,那么我们就可以直接.方法依次注入属性值,在ArkTs中使用已有的组件都可以像java生成类一样注入变量,比如Text类,里面有大小,颜色等等,有无参构造方法,带参数的构造方法。是不是特别像java生成一个类的过程

// string类型的参数
Text('test')
// $r形式引入应用资源,可应用于多语言场景
Text($r('app.string.title_value'))
// 无参数形式
Text()

Text('test')
  .fontSize(12)

条件和循环

  1. 在build函数中是可以使用if来渲染,满足if条件的执行这个组件。

  2. for循环渲染组件,使用ForEach,循环的列表,函数,id,分别为三个参数

ForEach(this.simpleList, (item: string) => {
  ChildItem({ item: item })
}, (item: string) => JSON.stringify(item))  // 需要保证key唯一