郴州必去三个景点,兰州企业网站优化,电子信息工程能考国家电网吗,深圳外包公司排名目录
基本语法概述
声明式UI描述
自定义组件
创建自定义组件
自定义组件的结构--struct #xff0c;Component#xff0c;build()函数
生命周期 基本语法概述 装饰器#xff1a; 用于装饰类、结构、方法以及变量#xff0c;并赋予其特殊的含义。如上述示例中Entry、C…目录
基本语法概述
声明式UI描述
自定义组件
创建自定义组件
自定义组件的结构--struct Componentbuild()函数
生命周期 基本语法概述 装饰器 用于装饰类、结构、方法以及变量并赋予其特殊的含义。如上述示例中Entry、Component和State都是装饰器Component表示自定义组件Entry表示该自定义组件为入口组件State表示组件中的状态变量状态变量变化会触发UI刷新。UI描述以声明式的方式来描述UI的结构例如build()方法中的代码块。自定义组件可复用的UI单元可组合其他组件如上述被Component装饰的struct Hello。系统组件ArkUI框架中默认内置的基础和容器组件可直接被开发者调用比如示例中的Column、Text、Divider、Button。属性方法组件可以通过链式调用配置多项属性如fontSize()、width()、height()、backgroundColor()等。事件方法组件可以通过链式调用设置多个事件的响应逻辑如跟随在Button后面的onClick()。系统组件、属性方法、事件方法具体使用可参考基于ArkTS的声明式开发范式。
除此之外ArkTS扩展了多种语法范式来使开发更加便捷
Builder/BuilderParam特殊的封装UI描述的方法细粒度的封装和复用UI描述。Extend/Style扩展内置组件和封装属性样式更灵活地组合内置组件。stateStyles多态样式可以依据组件的内部状态的不同设置不同样式。
声明式UI描述
ArkTS以声明方式 组合 和 扩展 组件 来 描述应用程序的UI同时还提供了基本的属性、事件和子组件配置方法帮助开发者实现应用交互逻辑。
//如果组件支持子组件配置则需在尾随闭包{...}中为组件添加子组件的UI描述。Column、Row、Stack、Grid、List等组件都是容器组件。State size:number 10
myClickHandler(){}build(){Column() {Row() {Image(https://xyz/test.jpg)Image(test1.jpg).width(100).height(100)// string类型的参数Text(test)//枚举类型.fontSize(20).fontColor(Color.Red).fontWeight(FontWeight.Bold)// $r形式引入应用资源可应用于多语言场景Text($r(app.string.title_value)).fontSize(this.size)// 无参数形式Text()Button(click 1)//事件方法以“.”链式调用的方式配置系统组件支持的事件//三种方式.onClick(() {this.myText ArkUI;}).onClick(function(){this.myText ArkUI;}.bind(this)).onClick(this.myClickHandler.bind(this))}
}
}自定义组件
创建自定义组件
自定义组件具有以下特点
可组合允许开发者组合使用系统组件、及其属性和方法。可重用自定义组件可以被其他组件重用并作为不同的实例在不同的父组件或容器中使用。数据驱动UI更新通过状态变量的改变来驱动UI的刷新
自定义组件的结构--struct Componentbuild()函数
Component
struct MyComponent {build() {}
}
Entry
Component
struct MyComponent {
} 提示1 Entry装饰的自定义组件将作为UI页面的入口 提示2Entry装饰的自定义组件其build()函数下的根节点唯一且必要且必须为容器组件其中ForEach禁止作为根节点。
Component装饰的自定义组件其build()函数下的根节点唯一且必要可以为非容器组件其中ForEach禁止作为根节点。
//自定义组件 //Component装饰的自定义组件其build()函数下的根节点唯一且必要可以为非容器组件其中ForEach禁止作为根节点。Component
struct HelloComponent {State message: string Hello, World!;build() {// HelloComponent自定义组件组合--系统组件Row和Text//(当前根节点Row)Row() {Text(this.message).onClick(() {// 状态变量message的改变驱动UI刷新UI从Hello, World!刷新为Hello, ArkUI!this.message Hello, ArkUI!;})}}
} //多次调用自定义组件
//Entry装饰的自定义组件其build()函数下的根节点唯一且必要且必须为容器组件其中ForEach禁止作为根节点。
Entry
Component
struct ParentComponent {build() {//当前根节点ColumnColumn() {Text(ArkUI message)//多次调用自定义组件HelloComponent({ message: Hello, World! });Divider()HelloComponent({ message: 你好! });}}
} 生命周期 页面生命周期即被Entry装饰的组件生命周期提供以下生命周期接口
onPageShow页面每次显示时触发一次包括路由过程、应用进入前台等场景仅Entry装饰的自定义组件生效。onPageHide页面每次隐藏时触发一次包括路由过程、应用进入前后台等场景仅Entry装饰的自定义组件生效。onBackPress当用户点击返回按钮时触发仅Entry装饰的自定义组件生效。
组件生命周期即一般用Component装饰的自定义组件的生命周期提供以下生命周期接口
aboutToAppear组件即将出现时回调该接口具体时机为在创建自定义组件的新实例后在执行其build()函数之前执行。aboutToDisappear在自定义组件析构销毁之前执行。不允许在aboutToDisappear函数中改变状态变量特别是Link变量的修改可能会导致应用程序行为不稳定。
生命周期流程如下图所示下图展示的是被Entry装饰的组件首页生命周期。