当前位置: 首页 > news >正文

ArkUI中的自定义组件(一)

目录

前言

1.自定义组件的基本用法

2.自定义组件的基本结构

1.@Component

2.build函数

3.@Entry

4.@Reusable

3.自定义组件的参数规定

1.初始化自定义组件

2.函数传递

4.自定义组件的使用的原则

1.根节点必须唯一

2.不能声明本地变量

3.不允许在UI描述里直接使用console.info

4.不允许创建本地的作用域

5.允许调用没有用@Builder装饰的方法

6.不支持switch

7.不允许使用表达式

8.不允许直接改变状态变量

5.自定义组件通用样式


前言

        在ArkUI中,自定义组件的生命周期管理是开发高效应用的关键。

        以下是自定义组件生命周期的详细说明。

1.自定义组件的基本用法

        下面的代码中展示了一个最基础的自定义组件:

@Component
struct CommonButton {build() {Button('自定义组件生命周期', { type: ButtonType.Capsule }).margin({top:20})}
}

        调用的代码如下:

@Component
struct CommonButton {build() {Button('自定义组件生命周期', { type: ButtonType.Capsule }).margin({top:20})}
}@Entry
@Component
struct ComponentPage {private someColor: Color = Color.Pink;build() {Column() {CommonButton().onClick(()=>{console.log("自定义这")})}.height('100%').width('100%').backgroundColor('#F5F5F5')}
}

图1.最简单的自定义组件

        这里自定义组件和页面是写在一个文件中的,如果想做成一个组件,让其它页面也能调用。我们可以新创建一个文件,然后使用export关键字导出组件,然后在使用的页面使用import导入即可使用。

        还是以上上面的代码为例,我们新创建一个CommonButton文件:

@Component
export  struct CommonButton {build() {Button('自定义组件生命周期', { type: ButtonType.Capsule }).margin({top:20})}
}

        在页面中的使用方式如下:

import { CommonButton } from './CommonButton';@Entry
@Component
struct ComponentPage {private someColor: Color = Color.Pink;build() {Column() {CommonButton().onClick(()=>{console.log("自定义这")})}.height('100%').width('100%').backgroundColor('#F5F5F5')}
}

2.自定义组件的基本结构

        ArkUI中,自定义组件的语法如下:

struct XXX {

}

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

1.@Component

        @Component装饰器仅能装饰struct关键字声明的数据结构。struct被@Component装饰后具备组件化的能力,需要实现build方法描述UI,一个struct只能被一个@Component装饰。@Component可以接受一个可选的boolean类型参数。

        通过合理使用组件冻结机制,可以显著提升鸿蒙应用的渲染性能,特别是在复杂UI和长列表场景下。关键是要在动态性和性能之间找到平衡点。

2.build函数

http://www.dtcms.com/a/326605.html

相关文章:

  • 用于计算的程序是部署在哪里,为什么可以这样?
  • 从 WebView2 迁移至 DotNetBrowser:第一部分
  • android 换肤框架详解2-LayoutInflater源码解析
  • 《零基础入门AI:深度学习基础核心概念解析(从激活函数到反向传播)》
  • 大模型提示词工程实践:提示词工程实践-引导大模型完成任务
  • 直播美颜SDK架构设计指南:美白滤镜的高效实现与跨平台适配
  • MySQL 基本语法
  • 【网络基础】深入理解 TCP/IP 协议体系
  • 秒懂边缘云|1分钟了解边缘安全加速 ESA
  • GCC C++实现Matlab矩阵计算和数学函数功能
  • 乡土诗性的多重奏鸣——儿歌《生我养我的小村庄》文学赏析
  • C5.3:发射极偏置和LED驱动电路
  • 26考研|西安电子科技大学优势学科、25考研复试线及就业质量分析报告
  • 力扣热题100-----322.零钱兑换
  • 事务的特性
  • 下一代防火墙组网方案
  • IoT/透过oc_lwm2m/boudica150 源码中的AT指令序列,分析NB-IoT接入华为云物联网平台IoTDA的工作机制
  • visual studio 2015 使用番茄助手(Visual Assist)给函数自动添加注释模板
  • WSL / Linux安装MySQL(以及注意事项)
  • 嵌入式学习的第四十八天-中断+OCP原则
  • Photoshop图层混合模式:实现图像元素透明度渐变过渡的终极指南
  • Effective C++ 条款36: 绝不重新定义继承而来的非虚函数
  • 数据结构:树与二叉树
  • ARM基础概念 day51
  • easyExcel嵌套子集合导出Excel
  • 2025第十六届蓝桥杯大赛青少组省赛C++真题(初级组和中级组)
  • MCU的设计原理
  • SNMP入门教程:Windows下编译
  • Linux811 YUM;SHELL:if else fi,for
  • 进程线程切换的区别