前言
HarmonyOS 从API8开始不再支持java作为开发语言,从开发角度看该如何选择_鸿蒙不再支持java_华为开发者论坛的博客-CSDN博客
HarmonyOS开发Java与ArkTS如何抉择 | 老卫(柳伟卫)的博客 - 关注编程、系统架构、性能优化 | waylau.com
华为开发者论坛 | 华为开发者联盟 (huawei.com)
GitHub - waylau/harmonyos-tutorial: HarmonyOS Tutorial. 《跟老卫学HarmonyOS开发》
一. 基本语法概述
- @Entry、@Component和@State都是装饰器,@Component表示自定义组件,@Entry表示该自定义组件为入口组件,@State表示组件中的状态变量,状态变量变化会触发UI刷新,在我看來,struct类似java中的class.
2.页面和自定义组件生命周期
- onPageShow:页面每次显示时触发。
- onPageHide:页面每次隐藏时触发一次。
- onBackPress:当用户点击返回按钮时触发。
- aboutToAppear:组件即将出现时回调该接口,具体时机为在创建自定义组件的新实例后,在执行其build()函数之前执行。
- aboutToDisappear:在自定义组件即将析构销毁时执行。
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 :使得类属性序列化时不丢失类型信息,便于类的反序列化。