鸿蒙-自定义组件-语法

news/2025/1/1 10:36:23/

目录

语法组成

在学习自定义组件前,先看一下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.someColorMyComponent({ 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.infoconsole.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.ppmy.cn/news/1387946.html

相关文章

YoloV8改进策略:Block改进|焦点调制网络

摘要 FocalNets是一个新型的神经网络架构,它的核心特点是用焦点调制模块完全取代了自注意力(SA)机制,用于在视觉任务中建模令牌(token)之间的交互。这种架构的设计旨在提高模型的可解释性,并在…

软考高级:需求获取概念和例题

作者:明明如月学长, CSDN 博客专家,大厂高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

小程序搜索排名优化二三事

小程序的优化主要是排名优化和性能优化两个版块。性能优化这方面主要靠开发者自己完善,我们团队提供的服务就是把产品的排名打上去,获得更多的自然流量,实现盈利。 如何提升小程序的搜索排名主要从如下几个方面出发: 首先要知道…

Ubuntu 搭建gitlab服务器,及使用repo管理

一、GitLab安装与配置 GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。 1、安装Ubuntu系统(这个教程很多,就不展开了)。 2、安装gitlab社区版本,有需…

vLLM:给大模型提提速

vLLM:给大模型提提速 提出背景迭代级调度细粒度批处理机制PagedAttention算法、KV缓存管理器、分布式执行 提出背景 论文:https://dl.acm.org/doi/pdf/10.1145/3600006.3613165 代码:https://github.com/vllm-project/vllm 文档&#xff1…

主机与windows虚拟机远程桌面实现方法

目录 一、虚拟机相关配置1. 配置虚拟机网络2. 打开虚拟机远程桌面功能3. 配置虚拟机用户与分组 二、主机相关配置 当无法通过共享文件夹实现主机与windows虚拟机文件共享时,可以通过主机与虚拟机远程桌面的方法实现文件的共享传输。本文主要介绍主机与虚拟机远程桌面…

【MLLM+轻量多模态模型】24.02.Bunny-v1.0-2B-zh: 轻量级多模态语言模型 (效果一般)

24.02 北京人工智能研究院(BAAI)提出以数据为中心的轻量级多模态模型 arxiv论文:2402.Efficient Multimodal Learning from Data-centric Perspective 代码:https://github.com/BAAI-DCAI/Bunny 在线运行:https://wis…

Python Web开发记录 Day13:Django part7 Ajax入门与案例(任务管理)

名人说:莫道桑榆晚,为霞尚满天。——刘禹锡(刘梦得,诗豪) 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 1、Ajax入门①简介②工作原理③优点④缺点⑤使用…