当前位置:   article > 正文

HarmonyOS--ArkTS(1)--基本语法(1)_harmony osarkts基础语法

harmony osarkts基础语法

目录

基本语法概述

声明式UI描述

自定义组件

创建自定义组件

自定义组件的结构--struct ,@Component,build()函数

生命周期


基本语法概述

  • 装饰器: 用于装饰类、结构、方法以及变量,并赋予其特殊的含义。如上述示例中@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,同时还提供了基本的属性事件子组件配置方法,帮助开发者实现应用交互逻辑。

  1. //如果组件支持子组件配置,则需在尾随闭包"{...}"中为组件添加子组件的UI描述。Column、Row、Stack、Grid、List等组件都是容器组件。
  2. @State size:number = 10
  3. myClickHandler(){}
  4. build(){
  5. Column() {
  6. Row() {
  7. Image('https://xyz/test.jpg')
  8. Image('test1.jpg')
  9. .width(100)
  10. .height(100)
  11. // string类型的参数
  12. Text('test')
  13. //枚举类型
  14. .fontSize(20)
  15. .fontColor(Color.Red)
  16. .fontWeight(FontWeight.Bold)
  17. // $r形式引入应用资源,可应用于多语言场景
  18. Text($r('app.string.title_value'))
  19. .fontSize(this.size)
  20. // 无参数形式
  21. Text()
  22. Button('click +1')
  23. //事件方法以“.”链式调用的方式配置系统组件支持的事件
  24. //三种方式
  25. .onClick(() => {
  26. this.myText = 'ArkUI';
  27. })
  28. .onClick(function(){
  29. this.myText = 'ArkUI';
  30. }.bind(this))
  31. .onClick(this.myClickHandler.bind(this))
  32. }
  33. }
  34. }

自定义组件

创建自定义组件

自定义组件具有以下特点:

  • 可组合:允许开发者组合使用系统组件、及其属性和方法。
  • 可重用:自定义组件可以被其他组件重用,并作为不同的实例在不同的父组件或容器中使用。
  • 数据驱动UI更新:通过状态变量的改变,来驱动UI的刷新
自定义组件的结构--struct ,@Component,build()函数
  1. @Component
  2. struct MyComponent {
  3. build() {
  4. }
  5. }
  1. @Entry
  2. @Component
  3. struct MyComponent {
  4. }

 提示1: @Entry装饰的自定义组件将作为UI页面的入口 

 提示2:@Entry装饰的自定义组件,其build()函数下的根节点唯一且必要,且必须为容器组件,其中ForEach禁止作为根节点。

@Component装饰的自定义组件,其build()函数下的根节点唯一且必要,可以为非容器组件,其中ForEach禁止作为根节点。

//自定义组件 

  1. //@Component装饰的自定义组件,其build()函数下的根节点唯一且必要,可以为非容器组件,其中ForEach禁止作为根节点。
  2. @Component
  3. struct HelloComponent {
  4. @State message: string = 'Hello, World!';
  5. build() {
  6. // HelloComponent自定义组件组合--系统组件Row和Text
  7. //(当前根节点Row)
  8. Row() {
  9. Text(this.message)
  10. .onClick(() => {
  11. // 状态变量message的改变驱动UI刷新,UI从'Hello, World!'刷新为'Hello, ArkUI!'
  12. this.message = 'Hello, ArkUI!';
  13. })
  14. }
  15. }
  16. }

 //多次调用自定义组件 

  1. //@Entry装饰的自定义组件,其build()函数下的根节点唯一且必要,且必须为容器组件,其中ForEach禁止作为根节点。
  2. @Entry
  3. @Component
  4. struct ParentComponent {
  5. build() {
  6. //(当前根节点Column)
  7. Column() {
  8. Text('ArkUI message')
  9. //多次调用自定义组件
  10. HelloComponent({ message: 'Hello, World!' });
  11. Divider()
  12. HelloComponent({ message: '你好!' });
  13. }
  14. }
  15. }

生命周期

页面生命周期,即被@Entry装饰的组件生命周期,提供以下生命周期接口:

  • onPageShow:页面每次显示时触发一次,包括路由过程、应用进入前台等场景,仅@Entry装饰的自定义组件生效。
  • onPageHide:页面每次隐藏时触发一次,包括路由过程、应用进入前后台等场景,仅@Entry装饰的自定义组件生效。
  • onBackPress:当用户点击返回按钮时触发,仅@Entry装饰的自定义组件生效。

组件生命周期,即一般用@Component装饰的自定义组件的生命周期,提供以下生命周期接口:

  • aboutToAppear:组件即将出现时回调该接口,具体时机为在创建自定义组件的新实例后,在执行其build()函数之前执行。
  • aboutToDisappear:在自定义组件析构销毁之前执行。不允许在aboutToDisappear函数中改变状态变量,特别是@Link变量的修改可能会导致应用程序行为不稳定。

生命周期流程如下图所示,下图展示的是被@Entry装饰的组件(首页)生命周期。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/100910
推荐阅读
相关标签
  

闽ICP备14008679号