HarmonyOS中ArkUi框架中常用的装饰器

news/2024/10/22 3:59:50/

目录

1.装饰器

1)@Component

1--装饰内容

2)@Entry

1--装饰内容

2--使用说明

3)@Preview 

1--装饰内容

2--使用说明

4)@CustomDialog

1--装饰内容

2--使用说明

5)@Observed

1--装饰内容

2--使用说明

1--装饰内容

2--使用说明

uilder-toc" style="margin-left:40px;">7)@Builder

1--装饰内容

2--使用说明

8)@Extend

1--装饰内容

2--使用说明

9)@Style

1--装饰内容

2--使用说明

10)@Prop

1--装饰内容

2--使用说明

11)@State

1--装饰内容

2--使用说明

1--装饰内容

2--使用说明

13)@Provide

1--装饰内容

2--使用说明

14)@Consume

1--装饰内容

2--使用说明

15)@Watch

1--装饰内容

2--使用说明

2:案例:自定义组件

3.案例:自定义组件的使用

4.组件预览

5.案例:样式复用


1.装饰器

1)@Component

1--装饰内容

        struct

 2--使用说明

        @Component用于定义一个UI组件类。这个装饰器可以指定组件的一些属性,如模板文件、样式文件

2)@Entry

1--装饰内容

        struct

2--使用说明

        被装饰的组件会被作为页面的入口组件,页面加载时渲染显示

3)@Preview 

1--装饰内容

        struct

2--使用说明

        自定义组件被@Preview 修饰后可以在DevEco的预览器里面看到自定义组件的样子

4)@CustomDialog

1--装饰内容

        struct

2--使用说明

        用于装饰自定义弹窗.通过这个装饰器,开发者可以定义一个具有特定UI和行为的对话框。

5)@Observed

1--装饰内容

        class

2--使用说明

        @Observed标记的属性会触发观察者模式,当该属性发生变化时,系统会自动更新相关的UI元素。

1--装饰内容

        class

2--使用说明

        被装饰的对象,父组件改变对象的属性或者子组件改变对象数据时,与该对象关联的组件都会被更新。

uilder">7)@Builder

1--装饰内容

        方法

2--使用说明

        允许将重复使用的 UI 代码抽象成方法,并可以在 build 方法中调用。被 @Builder 装饰的方法只能在 build 方法内部或其他 @Builder 方法中调用

8)@Extend

1--装饰内容

        方法

2--使用说明

        允许一个组件继承另一个组件的样式,从而可以复用已有的样式定义。

9)@Style

1--装饰内容

        方法

2--使用说明

        提供了一种方式来集中管理样式规则,减少样式的重复定义,提高代码的可维护性。类less和sass中的"混入"(Mixin)

10)@Prop

1--装饰内容

        基本数据类型

2--使用说明

        用于定义从父组件传递到子组件的属性。这些属性可以用来配置子组件的行为或外观。

11)@State

1--装饰内容

        基本数据类型,类,数组

2--使用说明

        用于声明组件的状态变量。状态变量的变化会触发 UI 的重新渲染。

1--装饰内容

        基本数据类型,类,数组

2--使用说明

        用于创建两个状态之间的链接。当一个状态发生变化时,另一个状态也会相应地更新。类似vue中的v-model指令,两个不同的组件绑定同一个变量,一个组件使这个变量改变,另外一个也会跟着改变。

13)@Provide

1--装饰内容

基本数据类型,类,数组

2--使用说明

装饰的数据作为数据的提供方,可以更新其子孙节点的数据,会刷新绑定该数据的组件。类似安卓中内容提供者,不同的应用的程序调用向外暴漏的数据。

14)@Consume

1--装饰内容

基本数据类型,类,数组

2--使用说明

装饰的数据感知到@provide装饰的变量更新后,会重新渲染该组件。这个类似安卓中的内容观察者,检测到数据变化后会做出相应的操作.

15)@Watch

1--装饰内容

状态变量(被@State,@Prop,@Link,@ObjectLink,@Provide,@Cunsume,@StorageProp,@StorageLink修饰的变量)

2--使用说明

监听状态的变化量

2:案例:自定义组件

@Component

struct 组件名字{

        build(){

       

                //这里写的是组件内容

        }

}

//自定义组件
@Component
struct myTextShow{build() {Text("你们好啊")  //字体组件.id('HelloWorld').fontSize(50).fontWeight(FontWeight.Bold)  //加粗.fontColor($r('app.color.start_window_background'))//文字颜色.width('50%')  //宽度.height('65%').backgroundImage($rawfile('boy.png')) //背景图片.alignRules({center: { anchor: '__container__', align: VerticalAlign.Center },middle: { anchor: '__container__', align: HorizontalAlign.Center }})}
}

3.案例:自定义组件的使用

import myTextShow from './MyDiv';  //导入组件
@Entry
@Component
struct Index {@State message: string = 'Hello World';build() {RelativeContainer() {//这是我们自定义的那个组件  myTextShow()}}}

4.组件预览

//自定义组件
@Component
@Preview     //组件预览
export default struct myTextShow{build() {Text("这是预览组件")  //字体组件.id('HelloWorld').fontSize(50).fontWeight(FontWeight.Bold)  //加粗.fontColor($r('app.color.start_window_background'))//文字颜色.width('50%')  //宽度.height('65%').backgroundImage($rawfile('boy.png')) //背景图片.alignRules({center: { anchor: '__container__', align: VerticalAlign.Center },middle: { anchor: '__container__', align: HorizontalAlign.Center }})}
}

//export default 把该组件导出去,供别人使用

5.案例:样式复用


@Entry
@Component
struct Index {@State message: string = 'Hello World';//导入组件build() {RelativeContainer() {Column(){Button("黄色按钮").width(200).height(100).fontColor($r("app.color.my_red")).myStyle()Button("默认按钮").myStyle2().width(200).height(100)Button("按钮4").myStyle3().width(200).height(100)Button("按钮5").myStyle4().width(200).height(100)}.padding(20)}}}
@Styles
function myStyle() {.backgroundColor($r("app.color.my_yellow"))
}@Styles
function myStyle2() {.backgroundColor($r("app.color.my_red"))
}
@Styles
function myStyle3() {.backgroundColor($r("app.color.my_green"))
}
@Styles
function myStyle4() {.backgroundColor($r("app.color.start_window_background"))
}


http://www.ppmy.cn/news/1540964.html

相关文章

写了十几年程序,今天才第一天知道什么是屎山代码

可以说,我确实没在工作中用过Javascript,因为我从未见过如此“厚颜无耻”的代码 我曾经也是学过2~3年,还是JQuery的年代,但应该确实没在实战中用过,否则我怎么会不记得写过这些屎山代码的??&…

【从零开始的LeetCode-算法】3194. 最小元素和最大元素的最小平均值

你有一个初始为空的浮点数数组 averages。另给你一个包含 n 个整数的数组 nums,其中 n 为偶数。 你需要重复以下步骤 n / 2 次: 从 nums 中移除 最小 的元素 minElement 和 最大 的元素 maxElement。将 (minElement maxElement) / 2 加入到 averages …

nginx中的HTTP 负载均衡

HTTP 负载均衡:如何实现多台服务器的高效分发 为了让流量均匀分配到两台或多台 HTTP 服务器上,我们可以通过 NGINX 的 upstream 代码块实现负载均衡。 方法 在 NGINX 的 HTTP 模块内使用 upstream 代码块对 HTTP 服务器实施负载均衡: upstr…

C语言头文件#ifndef条件编译用法

C语言中的头文件定义头 C语言里面经常看别人写的头文件: #ifndef C_CLIENT_H_ #define C_CLIENT_H_XXXX #endifXXX为真实的头内容,一直不大懂为何要加#ifndef C_CLIENT_H_这样的内容,其中C_CLIENT_H_大概是和自己的.h文件同名的一个大写标识…

025 elasticsearch索引管理-Java原生客户端

文章目录 pom.xml1创建索引2.创建索引并设置settings信息3.创建索引并设置mapping信息4.删除索引库5.给未设置mapping的索引设置mapping elasticsearch版本7.10.2,要求java客户端与之相匹配,推荐Springboot版本是2.3以上版本 依赖配置使用的是JUnit 5&am…

如何使用Rancher管理K8S集群

目录 1 Rancher介绍 1.1 Rancher简介 1.2 Rancher和k8s的区别 1.3 Rancher使用案例 2安装rancher 2.1 初始化实验环境 2.2 安装Rancher 2.3 登录Rancher平台 3 通过Rancher管理已存在的k8s集群 4 通过Rancher仪表盘管理k8s集群:部署tomcat服务 文档中…

C++面试速通宝典——29

543. 简述#ifdef、#else、#endif和#ifndef的作用 利用#ifdef、#endif将程序功能模块包括进去,以向特定用户提供该功能。 在不需要时用户可轻易将其屏蔽。 #ifdef MATH #include "math.c" #endif 在子程序前加上标记,以便于追踪和调试。 …

Java JDK的面试题

关于Java JDK的面试题,这里有一些常见的问题和答案,可以帮助你准备面试: JDK、JRE和JVM的区别: JDK(Java Development Kit)是Java开发工具包,包含了JRE和开发工具(如javac编译器和ja…