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

目录

1.装饰器

1)@Component

1--装饰内容

2)@Entry

1--装饰内容

2--使用说明

3)@Preview 

1--装饰内容

2--使用说明

4)@CustomDialog

1--装饰内容

2--使用说明

5)@Observed

1--装饰内容

2--使用说明

1--装饰内容

2--使用说明

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--使用说明

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

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.mzph.cn/diannao/56631.shtml

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

相关文章

【实战篇】用SkyWalking排查线上[xxl-job xxl-rpc remoting error]问题

一、组件简介和问题描述 SkyWalking 简介 Apache SkyWalking 是一个开源的 APM(应用性能管理)工具,专注于微服务、云原生和容器化环境。它提供了分布式追踪、性能监控和依赖分析等功能,帮助开发者快速定位和解决性能瓶颈和故障。…

【机器学习(十三)】零代码开发案例之股票价格预测分析—Sentosa_DSML社区版

文章目录 一、背景描述二、Sentosa_DSML社区版算法实现(一) 数据读入(二) 特征工程(三) 样本分区(四) 模型训练和评估(五) 模型可视化 三、总结 一、背景描述 股票价格是一种不稳定的时间序列,受多种因素的影响。影响股市的外部因素很多,主要有经济因素、政治因素和公司自身因素…

ASP.NET Core8.0学习笔记(二十)——EFCore导航属性与外键

一、什么是实体间关系 数据库表(实体)之间的关系:一对一(学生-成绩)、一对多(学生-科目)、多对多(教师-班级)。数据库中,每一个实体可以由主键唯一标识&…

MySQL表的基本查询下/分组聚合统计

1,update 对查询到的结果进行列值更新,可以和older by,where,limit合并使用,为了方便讲解,将会以题目练习的方式进行说明: 1,将孙悟空同学的数学成绩变更为 80 分 本道题和where联…

动态规划(1)斐波那契数列模型

动态规划算法流程: 1、状态表示: 指的是dp(dynamic programming)表里面的值所表示的含义 如何得出:1、题目要求 2、经验题目要求 3、分析问题的过程中发现重复子问题 2、状态转移方程 dp[i]等于什么 3、初始化 保证…

dbt doc 生成文档命令示例应用

DBT提供了强大的命令行工具,它使数据分析师和工程师能够更有效地转换仓库中的数据。dbt的一个关键特性是能够为数据模型生成文档,这就是dbt docs命令发挥作用的地方。本教程将指导您完成使用dbt生成和提供项目文档的过程。 dbt doc 命令 dbt docs命令有…

案例实践 | 以长安链为坚实底层,江海链助力南通民政打造慈善应用标杆

案例名称-江海链 ■ 实施单位 中国移动通信集团江苏有限公司南通分公司、中国移动通信集团江苏有限公司 ■ 业主单位 江苏省南通市民政局 ■ 上线时间 2023年12月 ■ 用户群体 南通市民政局、南通慈善总会等慈善组织及全市民众 ■ 用户规模 全市近30家慈善组织&#…

leetcode二叉树(八)-二叉树的最大深度

题目 104.二叉树的最大深度 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3示例 2: 输入&…

【STM32 HAL库】MPU6050姿态解算 卡尔曼滤波

【STM32 HAL库】MPU6050姿态解算 卡尔曼滤波 前言MPU6050寄存器代码详解mpu6050.cmpu6050.h 使用说明 前言 本篇文章基于卡尔曼滤波的原理详解与公式推导,来详细的解释下如何使用卡尔曼滤波来解算MPU6050的姿态 参考资料:Github_mpu6050 MPU6050寄存器…

项目管理软件真的能让敏捷开发变得更简单吗?

敏捷开发是一种以快速交付和适应变化为核心特点的软件开发方法。其特点包括尽早并持续交付、能够驾驭需求变化、版本周期内尽量不加任务、业务与开发协同工作、以人为核心、团队配置敏捷等。 例如,尽早并持续交付可使用的软件,使客户能够更早地体验产品…

【算法篇】动态规划类(4)——子序列(笔记)

目录 一、Leetcode 题目 1. 最长递增子序列 2. 最长连续递增序列 3. 最长重复子数组 4. 最长公共子序列 5. 不相交的线 6. 最大子序和 7. 判断子序列 8. 不同的子序列 9. 两个字符串的删除操作 10. 编辑距离 11. 回文子串 12. 最长回文子序列 二、动态规划总结 …

[Linux#67][IP] 报头详解 | 网络划分 | CIDR无类别 | DHCP动态分配 | NAT转发 | 路由器

目录 一. IP协议头格式 学习任何协议前的两个关键问题 IP 报头与有效载荷分离 分离方法 为什么需要16位总长度 如何交付 二. 网络通信 1.IP地址的划分理念 2. 子网管理 3.网络划分 CIDR(无类别域间路由) 目的IP & 当前路由器的子网掩码 …

外包干了3周,技术退步太明显了。。。。。

先说一下自己的情况,大专生,21年通过校招进入武汉某软件公司,干了差不多3个星期的功能测试,那年国庆,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我才在一个外包企业干了3周的功…

神经网络构建与训练深度学习模型全过程(PyTorch TensorFlow)

神经网络构建与训练深度学习模型全过程(PyTorch & TensorFlow) 目录 🔗 什么是神经网络:基础架构与工作原理🧩 构建简单的神经网络:层次结构与激活函数🚀 前向传播:神经网络的…

基于Handsontable.js + Excel.js实现表格预览和导出功能(公式渲染)

本文记录在html中基于Handsontable.js Excel.js实现表格预览、导出、带公式单元格渲染功能&#xff0c;在这里我们在html中实现&#xff0c;当然也可以在vue、react等框架中使用npm下载导入依赖文件。 Handsontable官方文档 一、开发前的准备引入相关依赖库 <!DOCTYPE ht…

微服务经典应用架构图

从网上找了一个经典的微服务架构图&#xff0c;资料来源于若依开源系统的ruoyi-cloud&#xff0c;仅供参考&#xff01;

面向城市运行“一网统管”的实景三维示范应用

在新型智慧城市建设的浪潮中&#xff0c;实景三维技术正成为推动城市治理现代化的重要力量。“一网统管”作为城市运行管理的新理念&#xff0c;强调了跨部门协作和数据共享&#xff0c;而实景三维技术为此提供了强有力的支撑。本文将探讨实景三维技术如何赋能“一网统管”&…

Linux笔记---vim的使用

1. vim的基本概念 Vim是一款功能强大的文本编辑器&#xff0c;它起源于Unix系统的vi编辑器&#xff0c;并在其基础上进行了许多改进和增强。 Vim以其高效的键盘操作、高度的可定制性和强大的文本处理能力而闻名&#xff0c;尤其受程序员和系统管理员的欢迎。 Vim支持多种模式…

cmake 编译 01

CMakeLists.txt cmake_minimum_required(VERSION 3.10)project(MyProject)set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED True)# 如果顶层 CMakeLists.txt 文件中使用了 add_subdirectory() 命令&#xff0c;CMake 会进入指定的子目录&#xff0c;并处理该目录…

2024年超好用的防泄密软件分享|10款加密防泄密软件推荐

在当今数字化时代&#xff0c;企业数据安全已成为不可忽视的重要议题。随着数据泄露事件频发&#xff0c;选择一款高效可靠的防泄密软件变得尤为重要。本文将为您推荐10款在2024年备受推崇的防泄密软件&#xff0c;并重点介绍Ping32防泄密软件的功能与优势。 1. Ping32防泄密软…