鸿蒙-自定义组件-语法

news2024/10/6 2:09:22

目录

语法组成

在学习自定义组件前,先看一下ArkTS的组成

装饰器

用于装饰类、结构、方法以及变量,并赋予其特殊的含义。如上述示例中@Entry、@Component和@State都是装饰器

Entry

表示该自定义组件为入口组件

Component

表示自定义组件

State

表示组件中的状态变量,状态变量变化会触发UI刷新。

自定义组件

可复用的UI单元,可组合其他组件,如上述被@Component装饰的struct Hello。

UI描述

以声明式的方式来描述UI的结构,例如build()方法中的代码块。 

系统组件

ArkUI框架中默认内置的基础和容器组件,可直接被开发者调用,比如示例中的Column、Text、Divider、Button。可参考:组件导读

事件方法

组件可以通过链式调用设置多个事件的响应逻辑,如跟随在Button后面的onClick()。

属性方法

组件可以通过链式调用配置多项属性,如fontSize()、width()、height()、backgroundColor()等。

Ui描述语法

自定义组件的参数规定

@Component
struct MyComponent {
  private countDownFrom: number = 0;
  private color: Color = Color.Blue;

  build() {
  }
}

@Entry
@Component
struct ParentComponent {
  private someColor: Color = Color.Pink;

  build() {
    Column() {
      // 创建MyComponent实例,并将创建MyComponent成员变量countDownFrom初始化为10,将成员变量color初始化为this.someColor
      MyComponent({ countDownFrom: 10, color: this.someColor })
    }
  }
}

build()函数

@Entry
@Component
struct MyComponent {
  build() {
    // 根节点唯一且必要,必须为容器组件
    Row() {
      ChildComponent() 
    }
  }
}

@Component
struct ChildComponent {
  build() 
  // 反例:不允许本地作用域
  {
    // 根节点唯一且必要,可为非容器组件
    Image('test.jpg')
    //下面为正例子和反例子
    // 反例:不允许声明本地变量
    let a: number = 1;
    // 反例:不允许console.info
     console.info('print debug log');
     Column() {
        // 反例:不能调用没有用@Builder装饰的方法
        this.doSomeCalculations();
        // 正例:可以调用
        this.doSomeRender();
        // 正例:参数可以为调用TS方法的返回值
        Text(this.calcTextValue())

      // 反例:不允许使用switch语法
      switch (expression) {
        case 1:
          Text('...')
          break;
        case 2:
          Image('...')
          break;
        default:
          Text('...')
          break;
    }  
 // 反例:不允许使用表达式
    (this.aVar > 10) ? Text('...') : Image('...')

    }
  }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1528218.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Html+threejs数字孪生三维场景实现

程序示例精选 Htmlthreejs数字孪生三维场景实现 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对《Htmlthreejs数字孪生三维场景实现》编写代码,代码整洁,规则&#xf…

【机器学习】基于机器学习的分类算法对比实验

摘要 基于机器学习的分类算法对比实验 本论文旨在对常见的分类算法进行综合比较和评估,并探索它们在机器学习分类领域的应用。实验结果显示,随机森林模型在CIFAR-10数据集上的精确度为0.4654,CatBoost模型为0.4916,XGBoost模型为…

高端竞赛活动中的软硬件供应商要如何选择

知识竞赛活动属于“直播”类活动,一旦开始无法重来,所以软硬件稳定可靠至关重要,要历经多次活动的磨炼,性能稳定可靠,要有多重防灾难设计和备用方案。所以一定要选择历经磨炼的高端竞赛软件和执行团队。 可以从以下几个…

好书推荐 《ARM汇编与逆向工程 蓝狐卷 基础知识》

《ARM 汇编与逆向工程 蓝狐卷 基础知识》 与传统的 CISC(Complex Instruction Set Computer,复杂指令集计算机)架构相比,Arm 架构的指令集更加简洁明了,指令执行效率更高,能够在更低的功耗下完成同样的计…

【Ubuntu】FTP站点搭建

配置顺序 前提条件:确保软件仓库可以正常使用,确保已正常配置IP地址 1.安装FTP服务 2.编辑FTP配置文件 3.设置开机自启 4.创建用户 5.配置用户限制名单 6.重启服务 7.查看运行状态 8.测试在同一局域网下的Windows查看文件 1.安装FTP服务 sudo apt insta…

AWS监控,AWS 性能监控工具

监控云部署的性能是 IT 环境正常运行的内在条件。AWS 云是一个架构良好的框架,管理员可以使用专用的AWS 性能监控工具增强服务的功能。执行AWS监视是为了跟踪在AWS环境中积极运行的应用程序工作负载和资源。AWS监视器跟踪各种AWS云指标,以帮助提高在其上…

html--蝴蝶

<!DOCTYPE html> <html lang"en" > <head> <meta charset"UTF-8"> <title>蝴蝶飞舞</title> <link rel"stylesheet" href"https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.cs…

使用Navicat远程连接Linux中的MySQL

一、登录MySQL数据库 mysql -uroot -pXjm123456 二、使用mysql数据库 use mysql&#xff1b; 三、查询user表中包含host的字段 select user,host from user;### 该字段中&#xff0c;localhost表示只允许本机访问&#xff0c;可以将‘localhost’改为‘%’&#xff0c;‘%’表…

目标检测——YOLOv4算法解读

论文&#xff1a;YOLOv4&#xff1a;Optimal Speed and Accuracy of Object Detection 作者&#xff1a;Alexey Bochkovskiy, Chien-Yao Wang, Hong-Yuan Mark Liao 链接&#xff1a;https://arxiv.org/pdf/2004.10934.pdf 代码&#xff1a;https://github.com/AlexeyAB/darkne…

【洛谷 P9232】[蓝桥杯 2023 省 A] 更小的数 题解(字符串+区间DP)

[蓝桥杯 2023 省 A] 更小的数 题目描述 小蓝有一个长度均为 n n n 且仅由数字字符 0 ∼ 9 0 \sim 9 0∼9 组成的字符串&#xff0c;下标从 0 0 0 到 n − 1 n-1 n−1&#xff0c;你可以将其视作是一个具有 n n n 位的十进制数字 n u m num num&#xff0c;小蓝可以从 n…

数据结构奇妙旅程之红黑树

꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN …

【Selenium(四)】

一、浏览器操作 1、设置浏览器缩放大小 driver.set_window_size(长,宽) 2、浏览器的前进后退 #前进 driver.forward()#后退 driver.back() 3、浏览器的刷新 driver.refresh() 二、webdriver常见方法

#linux(使用apt-get下载)

&#xff08;一&#xff09;发行版&#xff1a;Ubuntu16.04.7 &#xff08;二&#xff09;记录&#xff1a; &#xff08;1&#xff09;设置下载源 &#xff08;2&#xff09;在终端切换到root&#xff0c;然后输入apt-get update更新下载源 &#xff08;3&#xff09;安装一…

MATLAB的使用(一)

一&#xff0c;MATLAB的编程特点 a,语法高度简化&#xff1b; b,脚本式解释型语言&#xff1b; c,针对矩阵的高性能运算&#xff1b; d,丰富的函数工具箱支持&#xff1b; e,通过matlab本体构建跨平台&#xff1b; 二&#xff0c;MATLAB的界面 工具栏:提供快捷操作编辑器…

【机器学习】无监督学习算法之:自编码器

自编码器 1、引言2、自编码器2.1 定义2.2 原理2.3 实现方式2.4 算法公式2.5 代码示例 3、总结 1、引言 小屌丝&#xff1a;鱼哥&#xff0c; 今天可以讲一讲 自编码器嘛 小鱼&#xff1a;请说清楚&#xff0c;是什么编码器&#xff1f; 小屌丝&#xff1a;自编码器 小鱼&#…

【LabVIEW FPGA入门】并行执行

利用图形化编程的并行特性以及 FPGA 上 LabVIEW 图的真正并行实现&#xff0c;您可以通过将应用程序代码划分为更小的进程来进一步优化执行速度。与整个应用程序在一个循环中运行相比&#xff0c;这使得每个进程能够实现更高的循环速率和更高的应用程序整体执行速率。 …

Java-SpringAop 编程式事物实现

SpringAop 编程式事物实现 1. 数据库事物特性 原子性 多个数据库操作是不可分割的&#xff0c;只有所有的操作都执行成功&#xff0c;事物才能被提交&#xff1b;只要有一个操作执行失败&#xff0c;那么所有的操作都要回滚&#xff0c;数据库状态必须回复到操作之前的状态 …

【11】工程化

一、为什么需要模块化 当前端工程到达一定规模后,就会出现下面的问题: 全局变量污染 依赖混乱 上面的问题,共同导致了代码文件难以细分 模块化就是为了解决上面两个问题出现的 模块化出现后,我们就可以把臃肿的代码细分到各个小文件中,便于后期维护管理 前端模块化标准…

杰理-手表-卡槽式的sd卡热插拔

杰理-卡槽式的sd卡热插拔 卡槽式的sd卡热插拔&#xff0c;需要把TCFG_SD_ALWAY_ONLINE_ENABLE这个宏关掉

KT1328A主从一体蓝牙模块方案_主机使用流程以及开机返回信息说明

在KT6368A芯片基础上&#xff0c;新增KT1328A蓝牙主从一体版本&#xff0c;实现的是主从一体相互切换&#xff0c;可以设置为主机【类似于手机的角色】&#xff0c;也可以设置为从机角色&#xff0c;通过AT指令 不支持SPP&#xff0c;不支持低功耗 。功耗和之前KT6368A双模版本…