赞
踩
目录
自定义组件的结构--struct ,@Component,build()函数
除此之外,ArkTS扩展了多种语法范式来使开发更加便捷:
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))
- }
- }
- }
自定义组件具有以下特点:
- @Component
- struct MyComponent {
- build() {
- }
- }
- @Entry
- @Component
- struct MyComponent {
- }
提示1: @Entry装饰的自定义组件将作为UI页面的入口
提示2:@Entry装饰的自定义组件,其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() {
- //(当前根节点Column)
- Column() {
- Text('ArkUI message')
- //多次调用自定义组件
- HelloComponent({ message: 'Hello, World!' });
- Divider()
- HelloComponent({ message: '你好!' });
- }
- }
- }
页面生命周期,即被@Entry装饰的组件生命周期,提供以下生命周期接口:
组件生命周期,即一般用@Component装饰的自定义组件的生命周期,提供以下生命周期接口:
生命周期流程如下图所示,下图展示的是被@Entry装饰的组件(首页)生命周期。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。