1.Object类型

Object类型是所有引用类型的基类型。任何值,包括基本类型的值(它们会被自动装箱),都可以直接被赋给Object类型的变量。

2.枚举常量

使用枚举常量时必须以枚举类型名称为前缀。

enum ColorSet { Red, Green, Blue }
let c: ColorSet = ColorSet.Red;

3.union类型

union类型即联合类型,是由多个类型组合成的引用类型。联合类型包含了变量可能的所有类型。

class Cat {
  // ...
}
class Dog {
  // ...
}
class Frog {
  // ...
}
type Animal = Cat | Dog | Frog | number
// Cat、Dog、Frog是一些类型(类或接口)
 

let animal: Animal = new Cat();
animal = new Frog();
animal = 42;
// 可以将类型为联合类型的变量赋值为任何组成类型的有效值

4.闭包 


  https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/introduction-to-arkts-V5#闭包


5.快捷键


Alt+7   
ctl+F12  类代码结构
shift+shift  全局搜文件或代码  可直接选all

6.入口页面如何引用的


 a.entry里的module.json5中找到带skills的aibility,里面有"srcEntry": "./ets/entryability/EntryAbility.ts"
 b.ets/entryability/EntryAbility.ts里的方法onWindowStageCreate()有通过loadContent加载第一个页面windowStage.loadContent('pages/Index', (err, data)
 c.第一个加载的页面就是entry\pages\Index.ets


7.页面路由

router.back() 和 router.pushUrl() 的区别
  router.back() 会将当前页面移出页面栈
  router.pushUrl() 不会将当前页面移出页面栈

还需要在配置文件把页面配置下:resources/base/profile/main_pages.json


8.aboutToAppear()

使用场景:发起网络请求和数据初始化


9.装饰器


  @state  装饰状态变量,变量必须初始化
  @Prop   装饰状态变量,变量允许初始化,父向子单向传值(父State,子Prop)
  @Extend 抽取组件的共有属性到一个函数,在build外部定义
  @Link   装饰状态变量,变量禁止初始化,父与子双向传值(父State,子Link)
  @Builder  将重复的UI元素封装成一个方法,在build内调用,在build内定义  

示例1

@Extend(Column)
function ColumnStyle() {
  .justifyContent(FlexAlign.Center)
  .width(150)
  .height(150)
  .borderRadius(10)

示例2

build() {
  Column() {
    this.CommonText
  }
  @Builder
  CommonText() {
    Text('ArkUI')
      .fontWeight(FontWeight.Bold)
      .fontSize(20)
      .fontColor(Color.White)
  }
}
父类:
 
struct Index {
    @State data: string = '';

    build() {
          Stack() {
          // 主内容区域
              Row() {
                    Tabs({ controller: this.controller, index: this.currentIndex }) {
                          TabContent() {
                                page1({data: $data})
                          }
                          TabContent() {
                                page2()
                          }
                }
                .barHeight(0)
                .height('100%')
                .scrollable(false)
          }
          .layoutWeight(1)
        }
    }
}

子类:

struct page1 {
@Link data:string;

    build() {
        Row() {
            Text(data)
        }
    }
}

10.布局组件


Row
Column
Stack
List


11.ForEach
12.MVVM架构

13.属性动画

// 需求:利用animateTo做动画
// 组件1: 做旋转动画
// 组件2: 做位移和透明度动画
//第一步: 声明相关状态变量
//第二步:将状态变量设置到相关可动画属性接口 (状态变量关联组件属性)
//第三步:动画接口的 闭包内通过状态变量改变UI界面  (改变状态变量,开启动画)

      // 1. animation:可以让多个动画,使用不同的动画参数
      // 2. animateTo:多个动画,只能公用一个相同的动画参数

14.转场动画


出现、消失
导航转场
模态转场
共享元素转场

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐