【HarmonyOS 4.0】@BuilderParam 装饰器

2024-08-26 18:20

本文主要是介绍【HarmonyOS 4.0】@BuilderParam 装饰器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. @BuilderParam 装饰器

  1. @BuilderParam 装饰器用于装饰自定义组件(struct)中的属性,其装饰的属性可作为一个UI结构的占位符,待创建该组件时,可通过参数为其传入具体的内容。
  2. 参数必须满足俩个条件:
    2.1 参数类型必须是个函数;
    2.2 参数必须是个UI结构;
  3. 因此这个参数就是 @Builder 方法
  4. 在这里插入图片描述

1.1 代码案例如下:

// 第一个Builder
@Builder
export function imageBuilder(title: string) {Column({ space: 10 }) {Image($r('app.media.app_icon')).width('70%').height('70%').objectFit(ImageFit.Contain)Text(title).fontSize(16).fontWeight(FontWeight.Bold)}
}// 第二个Builder
class TextObjBuilder {title: string = ''container: string = ''
}@Builder
export function textBuilder($$: TextObjBuilder) {Column({ space: 10 }) {Text($$.title).fontSize(16).fontWeight(FontWeight.Bold)Text($$.container).fontSize(14).textOverflow({ overflow: TextOverflow.Ellipsis }).maxLines(6)}
}// 自定义组件
import { imageBuilder } from "./ImageBuilder"
import { textBuilder } from './TextBuilder'@Extend(Column)
function columnStyle() {.width('90%').height(180).borderRadius(10).shadow({ radius: 20 }).padding(10)
}class TextObjBuilder {title: string = ''container: string = ''
}@Entry
@Component
struct Index {@State title: string = '@BuilderParam装饰器:引用@Builder函数'@State container: string ='当开发者创建了自定义组件,并想对该组件添加特定功能时,例如在自定义组件中添加一个点击跳转操作。若直接在组件内嵌入事件方法,将会导致所有引入该自定义组件的地方均增加了该功能。为解决此问题,ArkUI引入了@BuilderParam装饰器,@BuilderParam用来装饰指向@Builder方法的变量,开发者可在初始化自定义组件时对此属性进行赋值,为自定义组件增加特定的功能。该装饰器用于声明任意UI描述的一个元素,类似slot占位符。'@BuilderParam content1: (title: string) => void = imageBuilder@BuilderParam content2: (TextObjBuilder: TextObjBuilder) => void = textBuilderbuild() {Column({ space: 20 }) {Column() {this.content1(this.title)}.columnStyle()Column() {this.content2({ title: this.title, container: this.container })}.columnStyle()}.height('100%').width('100%')}
}

这篇关于【HarmonyOS 4.0】@BuilderParam 装饰器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1109324

相关文章

Python装饰器之类装饰器详解

《Python装饰器之类装饰器详解》本文将详细介绍Python中类装饰器的概念、使用方法以及应用场景,并通过一个综合详细的例子展示如何使用类装饰器,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. 引言2. 装饰器的基本概念2.1. 函数装饰器复习2.2 类装饰器的定义和使用3. 类装饰

鸿蒙中@State的原理使用详解(HarmonyOS 5)

《鸿蒙中@State的原理使用详解(HarmonyOS5)》@State是HarmonyOSArkTS框架中用于管理组件状态的核心装饰器,其核心作用是实现数据驱动UI的响应式编程模式,本文给大家介绍... 目录一、@State在鸿蒙中是做什么的?二、@Spythontate的基本原理1. 依赖关系的收集2.

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Python中的属性装饰器:解锁更优雅的编程之道

引言 在Python的世界里,装饰器是一个强大的工具,它允许我们以一种非侵入性的方式修改函数或方法的行为。而当我们谈论“属性装饰器”时,则是在探讨如何使用装饰器来增强类中属性的功能。这不仅让我们的代码更加简洁、易读,同时也提供了强大的功能扩展能力。本文将带你深入了解属性装饰器的核心概念,并通过一系列实例展示其在不同场景下的应用,从基础到进阶,再到实际项目的实战经验分享,帮助你解锁Python编程

【HarmonyOS】-TaskPool和Worker的对比实践

ArkTS提供了TaskPool与Worker两种多线程并发方案,下面我们将从其工作原理、使用效果对比两种方案的差异,进而选择适用于ArkTS图片编辑场景的并发方案。 TaskPool与Worker工作原理 TaskPool与Worker两种多线程并发能力均是基于 Actor并发模型实现的。Worker主、子线程通过收发消息进行通信;TaskPool基于Worker做了更多场景化的功能封装,例

【鸿蒙HarmonyOS NEXT】页面之间相互传递参数

【鸿蒙HarmonyOS NEXT】页面之间相互传递参数 一、环境说明二、页面之间相互传参 一、环境说明 DevEco Studio 版本: API版本:以12为主 二、页面之间相互传参 说明: 页面间的导航可以通过页面路由router模块来实现。页面路由模块根据页面url找到目标页面,从而实现跳转。通过页面路由模块,可以使用不同的url访问不同的页面,包括跳转到U

Mongodb最新版本安装(4.0以上)

最近学习Mongodb数据库 总结了一下心得分享给大家 一,首先需要去官网下载Mongodb  网址https://www.mongodb.com/download-center/community   如下图所示 选择版本号、对应的操作系统、安装包后 点击download  开始下载  下载完成后双击安装就行 安装步骤 1.双击之后如图所示 直接next 2.由于笔者没有保存这张

HarmonyOS】ArkTS学习之基于TextTimer的简易计时器的elapsedTime最小时间单位问题

本文旨在纪录自己对TextTimer使用过程的疑惑问题 我在查看教程时候,发现很多博客在onTimer(event: (utc: number, elapsedTime: number) => void) 这里提到elapsedTime:计时器经过的时间,单位为毫秒。我不清楚是否为版本问题。 在我查看version11和version10的api时候,说的都是设置格式的最小单位。 经过个人检验的

python+selenium2学习笔记unittest-04装饰器skip用法

在运行测试用例时,有时需跳过或判断用例时,可以用装饰器来实现 主要的几个方法就是下面的这几种 import unittestclass test(unittest.TestCase):def setUp(self):pass@unittest.skip('跳过')def test_01(self):print("直接跳过")@unittest.skipIf(3>2,'当条件为TRUE跳过')

python内置装饰器@staticmethod,@classmethod

2.@staticmethod,@classmethod 有了@property装饰器的了解,这两个装饰器的原理是差不多的。@staticmethod返回的是一个staticmethod类对象,而@classmethod返回的是一个classmethod类对象。他们都是调用的是各自的__init__()构造函数。 一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法。 而使用@stat