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

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"))
}

相关文章:

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

目录 1.装饰器 1)Component 1--装饰内容 2)Entry 1--装饰内容 2--使用说明 3)Preview 1--装饰内容 2--使用说明 4)CustomDialog 1--装饰内容 2--使用说明 5)Observed 1--装饰内容 2--使用说明 6)ObjectLin…...

服务攻防之Redis数据库安全

最近我将会把一些服务攻防方面的姿势在这里做一个简单总结。欢迎大家留言讨论。 首先我们先对这类安全问题做一个总体的概括! 一、总概 1.服务判断: 端口扫描:利用服务开启后的目标端口开放判断 组合判断:利用搭建常见组合分析可能开放服务…...

随机森林算法的原理与实现

随机森林(Random Forest)是一种集成学习算法,它通过构建多个决策树并结合这些树的结果来进行分类或回归。与单一的决策树相比,随机森林通过集成多个树的结果,能够显著提高预测的准确性和稳定性,减少模型的过…...

模仿百度-基础版

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>百度案例</title><style>*{margin: 0;p…...

c++贴瓷砖

题目描述 有一块大小是 2 * n 的墙面&#xff0c;现在需要用2种规格的瓷砖铺满&#xff0c;瓷砖规格分别是 2 * 1 和 2 * 2&#xff0c;请计算一共有多少种铺设的方法。 输入 输入的第一行包含一个正整数T&#xff08;T<20&#xff09;&#xff0c;表示一共有T组数据&…...

用 Python 构建高级配对交易策略

作者&#xff1a;老余捞鱼 原创不易&#xff0c;转载请标明出处及原作者。 写在前面的话&#xff1a; 本文阐述通过分析加密货币和传统金融工具之间的相关性和协整性&#xff0c;以及实施 Z-score 方法来生成交易信号&#xff0c;然后介绍如何使用 Python 构建配对交易策…...

Java 引用数据类型详解、字符串的不可变性、如何处理字符串的内存管理、String Pool 及其优化

文章目录 1. 引用数据类型1.1 常见引用数据类型 2. 字符串的不可变性2.1 不可变性的优点2.2 不可变性示例 3. 如何处理字符串的内存管理3.1 String Pool3.2 String 内存优化 4. String Pool 及其优化4.1 String Pool的工作原理4.2 String Pool的优化4.3 使用 intern() 进一步优…...

Babel使用

初始化项目 npm init -y 创建文件 // 转码前 // 定义数据 let input [1, 2, 3] // 将数组的每个元素 1 input input.map(item > item 1) console.log(input)配置.babelrc Babel的配置文件是.babelrc&#xff0c;presets字段设定转码规则&#xff0c;将es2015规则加入…...

自动机器学习(AutoML)

utoML是PAI的提供的自动寻找超参组合的机器学习增强型服务。您在训练模型时&#xff0c;如果超参组合复杂度过高&#xff0c;需大量训练资源和手工调试工作&#xff0c;可以使用AutoML来节省模型调参时间&#xff0c;提升模型调优效率和模型质量。 基础概念 超参数&#xff1a;…...

Vivado时序报告六:Report Timing详解

目录 一、前言 二、配置选项概览图 三、配置选项详解 3.1 Targets 3.2 Options 3.1.1 Report 3.1.2 Path limits 3.1.3 Path display 3.2 Advanced 3.2.1 Report 3.2.2 File Output 3.2.3 miscellaneous 3.3 Timer Settings 3.4 共有部分 四、 设计示例 4.1 设…...

java基础:数据类型的总结

一、Java 常用数据类型 1.数据类型分为:(1)基本数据类型 &#xff08;2&#xff09;引用数据类型 2.基本数据类型分类&#xff1a;数值型&#xff0c;非数值型。 3.数值型:&#xff08;1&#xff09; 整数类型&#xff08;byte,short,int,long) &#xff08;2&#xff09; …...

【目标检测论文解读复现NO.39】基于改进 YOLOv8 的轻量级复杂环境苹果叶片病害检测方法

前言 此前出了目标改进算法专栏&#xff0c;但是对于应用于什么场景&#xff0c;需要什么改进方法对应与自己的应用场景有效果&#xff0c;并且多少改进点能发什么水平的文章&#xff0c;为解决大家的困惑&#xff0c;此系列文章旨在给大家解读最新目标检测算法论文&#xff0c…...

python 基础笔记 2(函数, 类)

起因, 目的: 把很久以前,自己写的笔记发布出来。 现在粉丝多了,也不觉得丢人了。 为什么这些序号不连贯,因为有些很熟悉的东西,我都删了。 内建函数, 函数 zip()函数,利用 * 号操作符,可以将元组解压为列表。 我怀疑是zip的解包只能用一次。在内存中解开一次之后就销…...

LeetCode 2090.半径为K的子数组平均值

题目&#xff1a; 给你一个下标从 0 开始的数组 nums &#xff0c;数组中有 n 个整数&#xff0c;另给你一个整数 k 。 半径为 k 的子数组平均值 是指&#xff1a;nums 中一个以下标 i 为 中心 且 半径 为 k 的子数组中所有元素的平均值&#xff0c;即下标在 i - k 和 i k 范…...

Qt C++ 编程中定义了一个槽函数(slot)deleteLater的作用

这行代码是在 Qt C编程中定义了一个槽函数&#xff08;slot&#xff09;deleteLater。 在 Qt 框架中&#xff0c;Q_SLOTS关键字用于声明类中的槽函数。deleteLater是一个非常有用的函数&#xff0c;它会安排接收对象在事件循环返回后被删除。 通常在以下情况下会使用deleteLa…...

【Hive】8-Hive性能优化及Hive3新特性

Hive性能优化及Hive3新特性 Hive表设计优化 Hive查询基本原理 Hive的设计思想是通过元数据解析描述将HDFS上的文件映射成表 基本的查询原理是当用户通过HQL语句对Hive中的表进行复杂数据处理和计算时&#xff0c;默认将其转换为分布式计算 MapReduce程序对HDFS中的数据进行…...

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-18

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-18 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-18目录1. On the Reliability of Large Language Models to Misinformed and Demographically-Informed Prompts2. SafeLLM: Dom…...

CTF(四)

导言&#xff1a; 本文主要讲述在CTF竞赛中&#xff0c;web类题目file_include。 靶场链接&#xff1a;攻防世界 (xctf.org.cn) 一&#xff0c;观察页面。 可以看到一段php代码。从则段代码中我们可以知道&#xff1a; 1&#xff0c;使用include引入check.php文件&#xff…...

智慧商城项目1-项目初始化创建

这是一个面向移动端的项目&#xff0c;先看看做了这个项目能收获什么&#xff0c;注意这是vue2的项目&#xff0c; 是个经典项目&#xff0c;能为未来学习vue3项目打下基础。 首先来说一下为啥是vue2&#xff0c;因为vue3还没有大范围普及&#xff0c;目前大部分企业还在用vue2…...

Java集合(四)--treeset/treemap/章节练习题目/去重原理的解读和应用

文章目录 1.treeset结构2.treemap结构3.集合去重辨析总结4.对于arraylist的练习题目5.对于HashMap的练习题目6.第三点的去重运用7.HashSe练习题目 1.treeset结构 下面的这个就是对于这个treeset结构进行测试的一个程序&#xff0c;在这个里面&#xff0c;add表示的就是对于这个…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...

面向无人机海岸带生态系统监测的语义分割基准数据集

描述&#xff1a;海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而&#xff0c;目前该领域仍面临一个挑战&#xff0c;即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...

Redis:现代应用开发的高效内存数据存储利器

一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发&#xff0c;其初衷是为了满足他自己的一个项目需求&#xff0c;即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源&#xff0c;Redis凭借其简单易用、…...