HarmonyOS开发(1):ArkTS的初步认识

ArkTS语言简介

ArkTS是鸿蒙生态的应用开发语言。基本语法风格与TypeScript(简称TS)相似,在TS的生态基础上进一步扩展,继承了TS的所有特性,是TS的超集。

扩展能力

基础语法:声明式语法、组件化机制、数据-UI自动关联。

scss 复制代码
@Entry
@Component
struct Index {
  @State message: string = 'Hello World'

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
          .onClick(()=>{
            this.message = "你好,世界"
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}

状态管理ArkTS提供了多维度的状态管理机制。比如数据传递可以在父子组件之间、爷孙组件之间,还可以应用全局范围传递或者跨设备传递。同时,数据的传递可以只单向传递可变更的双向传递

渲染控制条件渲染可根据应用的不同状态,渲染对应状态下的UI内容。循环渲染可从数据源中迭代获取数据,并在每次迭代过程中创建相应的组件。数据懒加载从数据源中按需迭代数据,并在每次迭代过程中创建相应的组件。

ArkTS基本语法

ArkTS的基本组成

  • 装饰器 :装饰类、结构、方法以及变量。比如@Component自定义组件,@Entry自定义组件为入口组件,@State组件的状态变量,会触发UI刷新。
  • UI描述:声明式方式描述。

声明式UI描述

无参数和有参数组件:通过代码可以看得出来,组件后面"()"有没有配置内容,有就是有参,无则是无参。

scss 复制代码
Column() {//无参数
  Text('item 1')//有参数
  Divider()//无参数
  Text('item 2')
}

在有参数的组件配置参数格式如下:

  • Image组件的必须参数src
rust 复制代码
Image('https://xyz/test.jpg')
  • 应用资源采用$r形式引用
scss 复制代码
// string类型的参数
Text('test')
// $r形式引入应用资源,可应用于多语言场景
Text($r('app.string.title_value'))
// 无参数形式
Text()
  • 变量或者表达式也可以参数赋值,字符串变量嵌套采取${}
kotlin 复制代码
Image(this.imagePath)
Image('https://' + this.imageUrl)
Text(`count: ${this.count}`)

配置属性

属性方法以"."链式调用,比如fontSize(30)、width(this.width)、。具体有什么属性根据组件类型来判断,属性方法和其他语言的属性大同小异。

scss 复制代码
Text('hello')
  .fontSize(20)
  .fontColor(Color.Red)
  .fontWeight(FontWeight.Bold)

配置事件

事件方法以"."链式调用的方式配置系统组件支持的事件。

kotlin 复制代码
//箭头函数
Button('Click me')
  .onClick(() => {
    this.myText = 'ArkUI';
  })
  
//匿名函数表达式
Button('add counter')
  .onClick(function(){
    this.counter += 2;
  }.bind(this))//使用bind,以确保函数体中的this指向当前组件

//调用函数
myClickHandler(): void {
  this.counter += 2;
}
...
Button('add counter')
  .onClick(this.myClickHandler.bind(this))

自定义组件

自定义组件的基本结构

less 复制代码
@Entry
@Component
struct MyComponent {
}
  • struct + 自定义组件名 + {...}的组合构成自定义组件,不能有继承关系
  • @Component仅装饰struct关键字声明的数据结构,一个struct只能被一个@Component装饰。
  • build()函数用于定义自定义组件的声明式UI描述。
  • @Entry装饰该自定义组件为UI页面的入口,@EntryUI页面的关系是一对一。

tips:自定义组件固定格式必有struct@Componentbuild()

成员函数/变量

成员函数:

  1. 不支持静态函数
  2. 成员函数的访问是私有的

成员变量:

  1. 不支持静态成员变量
  2. 成员变量都是私有的
  3. 成员变量的初始化可选可必选
less 复制代码
@Component
struct MyComponent {
  private countDownFrom: number = 0;
  private color: Color = Color.Blue;

  build() {
  }
}

@Entry
@Component
struct ParentComponent {
  private someColor: Color = Color.Pink;

  build() {
    Column() {
      // 创建MyComponent实例,并将创建MyComponent成员变量countDownFrom初始化为10,将成员变量color初始化为this.someColor
      MyComponent({ countDownFrom: 10, color: this.someColor })
    }
  }
}
相关推荐
盐焗西兰花8 小时前
鸿蒙学习实战之路-Reader Kit修改翻页方式字体大小及行间距最佳实践
学习·华为·harmonyos
lbb 小魔仙12 小时前
【HarmonyOS实战】React Native 表单实战:在 OpenHarmony 上构建高性能表单
react native·华为·harmonyos
一只大侠的侠15 小时前
React Native开源鸿蒙跨平台训练营 Day16自定义 useForm 高性能验证
flutter·开源·harmonyos
早點睡39016 小时前
高级进阶 React Native 鸿蒙跨平台开发:@react-native-community-slider 滑块组件
react native·react.js·harmonyos
一只大侠的侠16 小时前
Flutter开源鸿蒙跨平台训练营 Day11从零开发商品详情页面
flutter·开源·harmonyos
一只大侠的侠16 小时前
React Native开源鸿蒙跨平台训练营 Day18自定义useForm表单管理实战实现
flutter·开源·harmonyos
一只大侠的侠16 小时前
React Native开源鸿蒙跨平台训练营 Day20自定义 useValidator 实现高性能表单验证
flutter·开源·harmonyos
听麟17 小时前
HarmonyOS 6.0+ 跨端智慧政务服务平台开发实战:多端协同办理与电子证照管理落地
笔记·华为·wpf·音视频·harmonyos·政务
前端世界18 小时前
从单设备到多设备协同:鸿蒙分布式计算框架原理与实战解析
华为·harmonyos
一只大侠的侠19 小时前
Flutter开源鸿蒙跨平台训练营 Day12从零开发通用型登录页面
flutter·开源·harmonyos