Harmony应用开发学习笔记

181 阅读3分钟

前言

鸿蒙App开发入门 - 学习路径

华为开发者鸿蒙专区小助手_-CSDN博客

HarmonyOS 从API8开始不再支持java作为开发语言,从开发角度看该如何选择_鸿蒙不再支持java_华为开发者论坛的博客-CSDN博客

HarmonyOS开发Java与ArkTS如何抉择 | 老卫(柳伟卫)的博客 - 关注编程、系统架构、性能优化 | waylau.com

华为开发者论坛 | 华为开发者联盟 (huawei.com)

GitHub - waylau/harmonyos-tutorial: HarmonyOS Tutorial. 《跟老卫学HarmonyOS开发》

一. 基本语法概述

  1. @Entry、@Component和@State都是装饰器,@Component表示自定义组件,@Entry表示该自定义组件为入口组件,@State表示组件中的状态变量,状态变量变化会触发UI刷新,在我看來,struct类似java中的class.

image.png

2.页面和自定义组件生命周期

  • onPageShow:页面每次显示时触发。
  • onPageHide:页面每次隐藏时触发一次。
  • onBackPress:当用户点击返回按钮时触发。
  • aboutToAppear:组件即将出现时回调该接口,具体时机为在创建自定义组件的新实例后,在执行其build()函数之前执行。
  • aboutToDisappear:在自定义组件即将析构销毁时执行。

image.png

3.@Builder装饰器:自定义构建函数

  • 组件内自定义构建函数 @Builder MyBuilderFunction(){ ... } 使用方法:this.MyBuilderFunction(){ ... }

  • 全局自定义构建函数 @Builder function MyGlobalBuilderFunction(){ ... } 使用方法:MyGlobalBuilderFunction()

4.@BuilderParam装饰器:引用@Builder函数

  • 初始化@BuilderParam装饰的方法 注意:@BuilderParam装饰的方法只能被自定义构建函数(@Builder装饰的方法)初始化。
@Component
struct Child {
  @BuilderParam aBuilder0: () => void = this.doNothingBuilder
  build(){}
}
  • 用父组件自定义构建函数初始化子组件@BuilderParam装饰的方法
@Component
struct Child {
  @BuilderParam aBuilder0: () => void;

  build() {
    Column() {
      this.aBuilder0()
    }
  }
}

二.状态管理V1

  • @State装饰器 使变量拥有状态属性的装饰器
  • @Prop装饰器:装饰的变量可以和父组件建立单向的同步关系,父组件变化会自动同步到子组件,子组件对变量的修改不会自动传递到父组件。
  • @Link装饰器:父子双向同步
  • @Provide装饰器和@Consume装饰器:与后代组件双向同步(一对多关系)
  • @Watch装饰器 :为状态变量设置回调函数 (无法实现对对象、数组中某一单个属性或数组项变化的监听)
  • @Observed装饰器和@ObjectLink装饰器:嵌套类对象属性变化(解决状态失效的问题)
tip:状态管理V1存在多种可接受外部传入的装饰器:@State@Prop@Link@ObjectLink (子组件参数)

二.状态管理V2

  • @Local装饰器:组件内部状态 (无法确保@State装饰变量的初始值一定为组件内部定义的值)
  • @Param: 组件外部输入。(子组件接收参数)
  • @ObservedV2装饰器和@Trace装饰器:解决@Observed装饰器和@ObjectLink调用过于复杂的问题.
  • @Once:仅初始化同步一次。(@Once必须搭配@Param使用)
  • @Event装饰器 :规范组件输出,修饰函数
  • @Provider和@Consumer 跨组件层级双向同步
  • @Monitor装饰器: 状态变量修改监听.
  • @Computed装饰器:计算属性.(防止重复计算,为方法装饰器,仅能装饰getter方法)
  • @Type :使得类属性序列化时不丢失类型信息,便于类的反序列化。