Harmony小技巧(1)——语法
语法
值传递与引用字面量传递
值传递
//fathermyComponent(this.params)//son@Builder function myComponent(params){ params}
引用字面量传递
引用字面量必须带"{}",且值传递无法让父组件的值刷新
myComponent({attr1:a1,attr2:a2})//son@Builder function myComponent(params){ params.attr1}export interface Params{ attr1:Attr1 attr2:Attr2}
取反
doLike:(item:ReplyItemModel)=>void =(item: ReplyItemModel)=>{}
传入匿名函数
this.click=!this.clic
类型断言
xx as Typedata:GoodsModule=new GoodsModule({} ...
Harmony状态管理
实时渲染必备条件
有状态修饰器
第一层级数据改变
但@Builder原则上只展示界面,不涉及状态相关,不改变数据
相关组件
@Stata
驱动界面刷新
@Prop
单向传值,父传子,只传一次
深拷贝,父与子各有一份完全独立的数据(独立内存区域)
@Entry@Componentstruct Parent{ @State val:number = 0 build(){ Son({val:val}) }}@Componentstruct Parent{ @Prop val build(){ }}
@Link
双向传值
浅拷贝,父与子共用一份数据
示例
@Entry@Componentstruct Parent{ @State val:number = 0 build(){ Son({val:val}) }}@Componen ...
Harmony网络相关
Get方式
根据JSON内容设置接口
//如果是数组,则用data:Data[] = []//如果是具体类型,则用dataModule:DataModule = new DataModuleInterface Data{ data1:CommonType data2:sonType}class DataModule implements Data{ data1:CommonType data2:specialType constructor(info:Data){ this.data1 = info.data1 this.data2 = info.data2 }}class specialType{ constructor(){ }}//初始化@State dataList:DataModule[] = [ new DataModule({data1:xx,data2:yy}), new Data ...
Harmony常用组件(1)——布局
布局
思路
将每个组件看作盒子
可以通过DevEco Previewer的TT查看,也可以自己设置.borderWidth查看盒子
主轴与交叉轴概述
两个轴相互垂直,不同容器中主轴方向不一样。如Column主轴为竖、交叉轴为横,而Row则相反。
设置主轴:.justyfyContent(FlexAlign.)
设置交叉轴:.alignItems(HorizontalAlign/VerticalAlign.)
Column
Row
Row({space:}) .width() .height() .alignItems(VerticalAlign) .justifyContent(FlexAlign or FlexDirection or FlexWarp)
Stack
前面写的组件在下,后面写的在上
Stack({alignContent:Alignment.Center}){}
RelativeContainer
RelativeContainer() {} .al ...
Harmony基本原理(2)——Stage模型
应用程序包
应用所对应的软件包文件,称为“应用程序包”
系统提供了应用程序包开发、安装、查询、更新、卸载的管理机制
系统还屏蔽了不同的芯片平台的差异
多Module设计机制
模块化开发
应用通常会包含多种功能,将每个功能模块作为一个独立的Module进行开发
可以包含源代码、资源文件、第三方库、配置文件等
Module可以独立编译,实现特定的功能
Module类型
说明
Ability类型
1. 每一个Ability类型的Module编译后,会生成一个以.hap为后缀的文件2. HAP包可以独立安装和运行,是应用安装的基本单位,一个应用中可以包含一个或多个HAP包 3.1. entry类型的Module:编译后生成entry类型的HAP。每一个应用分发到同一类型的设备上的应用程序包,只能包含唯一一个entry类型的HAP 3.2. 编译后生成feature类型的HAP。一个应用中可以包含一个或多个feature类型的HAP,也可以不包含。
Library类型的Module
1. 实现代码和资源的共享2.1 Static Library:静态共享库。编译后会生成 ...
Harmony通用信息(1)——通用属性
通用属性
尺寸
//缺省时使用元素自身内容需要的宽/高//若子组件的宽/高大于父组件的宽/高,则会画出父组件的范围//从API version 10开始,该接口支持calc计算特性width(value: Length)height(value: Length)//从API version 10开始,该接口支持calc计算特性size(value: SizeOptions)//从API version 10开始,该接口支持calc计算特性padding(value: Padding | Length | LocalizedPadding)margin(value: Margin | Length | LocalizedMargin)//对子组件进行重新布局//子元素与兄弟元素占主轴尺寸按照权重进行分配//忽略元素本身尺寸设置//表示自适应占满剩余空间layoutWeight(value: number | string)//设置约束尺寸,组件布局时,进行尺寸范围限制//优先级高于Width和HeightconstraintSize(value: ConstraintSizeOption ...
Harmony基本原理(1)——框架结构
系统能力(SysCap)
SysCap5指OS每个独立的特性,如蓝牙、WIFI。
每个系统能力对应多个API
随目标设备是否支持该系统能力而共同存在或消失,也会随着DevEco Studio一起提供给开发者做联想
重要的系统能力
能力集
作用
支持能力集
设备SDK将设备分为两组,典型设备和自定义设备,典型设备的支持能力集由HarmonyOS来定义,自定义设备由设备厂商给出
应用能力集
应用
联想能力集
DevEco Studio可联想的APIDevEco Studio可联想的API
SDK向DevEco Studio提供全量API,DevEco Studio识别开发者项目中选择的设备形态,找到该设备的支持能力集,筛选支持能力集包含的API并提供API联想
单设备:默认应用的联想能力集,要求系统能力集和设备的支持系统能力集相等
多设备:默认应用的联想能力集是多个设备支持能力集的并集,要求能力集则是交集
自定义syscap
需要的能力超出工程默认设备定义的能力集范围,需要额外配置自定义的syscap
/src/main目录下,手动创建syscap.j ...