自学鸿蒙HarmonyOS的ArkTS语言<十>@BuilderParam装饰器

作用:当子组件多处使用时,给某处的子组件添加特定功能

一、初始化

1、只能被@Builder装饰的方法初始化
2、使用所属自定义组件的@builder方法初始化
3、使用父组件的@builder方法初始化 - 把父组件的@builder传过去,参数名和子组件的@builderParam同名

@Component
struct Child {@Builder childBuilder() {}@BuilderParam childBuilderParam: () => void = this.childBuilder // 必须用childBuilder初始化下,否则预览出不来build() {Column() {Text('我是子组件').fontColor(Color.White)this.childBuilderParam()}}
}@Entry
@Component
struct Index7 {@Builder parentBuilder() {Text('我是父组件定制的的 builder')}build() {Column() {Row() {Child({childBuilderParam: this.parentBuilder}) // 添加独特功能}.padding(10).backgroundColor(Color.Brown)Row() {Child()}.padding(10).backgroundColor(Color.Green)}}
}
二、this指向
@Component
struct Child1 {label: string = '我是子组件的label'@Builder childBuilder() {}@BuilderParam childBuilderParam: () => void = this.childBuilder@BuilderParam childChangeThisBuilderParam: () => void = this.childBuilderbuild() {Column() {this.childBuilderParam()this.childChangeThisBuilderParam()}}
}@Entry
@Component
struct Index7_1 {label: string = '我是父组件的label'@Builder parentBuilder() {Text(this.label)}build() {Column() {this.parentBuilder() // this指向父组件Child1({childBuilderParam: this.parentBuilder, // this.parentBuilder传入到child中指向childchildChangeThisBuilderParam: (): void => this.parentBuilder(), // 箭头函数的this指向宿主对象,即父组件})}}
}

在这里插入图片描述

三、带参数
class Tmp {label: string = ''
}
// 全局builder
@Builder function globalBuilder($$: Tmp) {Text($$.label)
}// Child1中
...
// 有参数
@BuilderParam childHasParamsBuilderParam: ($$: Tmp) => void = globalBuilder
build() {Column() {...this.childHasParamsBuilderParam({label: '我是一个有参数的BuilderParam'})}
}
// 父组件中
...
Child1({...childHasParamsBuilderParam: globalBuilder
})
四、尾随闭包的形式
@Component
struct Child2 {@Builder childBuilder() {}// 尾随闭包的形式传入时子组件内只能有一个BuilderParam@BuilderParam childBuilderParam: () => void = this.childBuilderbuild() {Column() {Text('我是子组件2')this.childBuilderParam()}.margin({top: 30})}
}
// 父组件中
...
Child2() {Column() {globalBuilder({label: '我是通过尾随闭包传入的'})}
}

在这里插入图片描述
注意:
尾随闭包的形式子组件内只能有一个 @BuilderParam

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3246402.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

SpringCloud教程 | 第十篇: 读取Nacos的配置

1、nacos服务器选用 2、test.yaml这一个DataId配置如下: config:name: aabb222 spring:application:name: testdatasource:type: com.zaxxer.hikari.HikariDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/hmblogs?useUni…

JuiceFS缓存特性

缓存 对于一个由对象存储和数据库组合驱动的文件系统,缓存是本地客户端与远端服务之间高效交互的重要纽带。读写的数据可以提前或者异步载入缓存,再由客户端在后台与远端服务交互执行异步上传或预取数据。相比直接与远端服务交互,采用缓存技…

HTML的简单应用 标记信件

前言: 暑假开始了,我也要正式开始学习web的相关知识了,先从三大件的html开始吧,目前只简单了解了html相关知识的基础,能写一些包含一些文字和图片的简单网页,其实会的东西还是不多,这边看书时发…

etcd的备份与恢复

一 为什么使用etcd 与ZooKeeper相比,etcd更简单,安装、部署和使用更加容易,并且etcd的某些功能是ZooKeeper所没有的。因此,在很多场景下,etcd 比ZooKeeper更受用户的青,具体表现在如下几个方面: 1 etcd更…

字节跳动十年经验老鸟,耗时大半年整理的软件测试面试真题【附答案】

软件测试工程师,和开发工程师相比起来,虽然前期可能不会太深,但是涉及的面还是比较广的。前期面试实习生或者一年左右的岗位,问的也主要是一些基础性的问题比较多。涉及的知识主要有MySQL数据库的使用、Linux操作系统的使用、软件…

操作系统详解之进程管理

一、进程 1.1 多道程序设计 允许多个程序同时进入内存并运行,提高CPU的利用率,目的是提高系统效率 a图内存中有四个程序,串行执行,因为这里只有一个程序计数器。 当有了多道程序技术之后就得到了b图,每个程序各自独立…

电脑显示mfc140u.dll丢失的修复方法,总结7种有效的方法

mfc140u.dll是什么?为什么电脑会出现mfc140u.dll丢失?那么mfc140u.dll丢失会给电脑带来什么影响?mfc140u.dll丢失怎么办?今天详细给大家一一探讨一下mfc140u.dll文件与mfc140u.dll丢失的多种不同解决方法分享! 一、mfc…

C++初学者指南-5.标准库(第一部分)--容器遍历

C初学者指南-5.标准库(第一部分)–容器遍历 文章目录 C初学者指南-5.标准库(第一部分)--容器遍历前向遍历基于范围的循环for_each / for_each_n迭代器的显式使用基于索引的循环 逆向遍历反向范围循环(C20)反向 for_each / for_each_n反向迭代器的显式使用基于索引的反向循环…

k8s核心操作_存储抽象_K8S中使用Secret功能来存储密码_使用免密拉取镜像_k8s核心实战总结---分布式云原生部署架构搭建033

注意在看的时候一定要把 dxxxx中的xxxx换成--o----c----k----e----r 然后我们再来看一个k8s中的secret的功能,这个功能 用来存储密码的,configMap是用来存配置的 比如我们有个pod,他的镜像,如果是需要密码的,那么 我们现在是从公共仓库拉取的,如果我们从私有仓库拉取,有密码…

18_Shell好用工具:sort

18_Shell好用工具:sort 选项说明-k指定要排序的列-nnumber,按照数值大小排序-rreverse,逆序-t分隔符-u去重-o保存排序到文件 一、数字升序 #sort1.txt文件纯数字 #升序 sort -n sort1.txt #降序 sort -nr sort1.txt二、数字升序去重 #数字…

Java SpringAOP简介

简介 官方介绍: SpringAOP的全称是(Aspect Oriented Programming)中文翻译过来是面向切面编程,AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生…

【前端7*】表格-表单2(弹窗在子组件)父子组件调用 vue element-ui

vue element-ui 中表单弹框的使用 写在最前面一、子组件 HelloWorld.vue1. 弹窗部分、将 visible 传值给父组件2.表单的 ruleForm 校验方法3.表单确认方法4. 提交确认方法:handleSummit5.表单渲染 二、父组件 HomeView.vue1.新增按钮、查看和编辑2.引用子组件弹窗3.…

强化学习——多臂老虎机问题(MAB)【附python代码】

文章目录 一、问题描述1.1 问题定义1.2 形式化描述1.3 累积懊悔1.4 估计期望奖励 二、解决方法2.1 ϵ-贪婪算法2.2 上置信界算法2.3 汤普森采样算法2.4 小结 一、问题描述 1.1 问题定义 有一个用于 K 根拉杆的老虎机,每一根拉杆都对应一个关于奖励的概率分布 R 。每…

Python项目实战之-爬取全网小说资源

python爬虫实战-小说爬取 基于requests模块与lxml模块编写的爬虫 基本思路 主要内容分为三个部分 使用requests模块获取网页内容使用lxml模块进行网页解析将解析出来的数据存储进MySQL数据库中 获取网页内容 网站分析 获取各个分类的href标签 代码如下 def novel_sort…

JMeter接口测试之文件上传(参数提取与传递)

参考文档: Jmeter接口测试-文件上传(全网最详细的教程)_jmeter 文件上传-CSDN博客 1、首先通过fiddler抓取文件上传接口,在Raw的tab页中查看默认请求头以及请求参数 如图所示 2、在jmeter中导入抓取的接口,首先需要配…

ctfshow~菜狗杯 损毁的压缩包

题目给了一个.zip的压缩包,解压报错 用010Editor打开看一下,发现文件头是png的 把文件后缀改成png看一下,得到flag ctfshow{e19efe2eb86f10ccd7ca362110903c05}

【生命游戏】python刷题记录

目录 题目: 代码: 结果: 总结: 题目: 代码: class Solution:def gameOfLife(self, board: List[List[int]]) -> None:"""Do not return anything, modify board in-place instead.&…

rocky9.3操作系统安装记录

文章目录 一、镜像源二、安装的过程选择安装过程中语言安装信息摘要页面设置安装目的地设置管理员密码调整网络开始部署 一、镜像源 Rocky-9.3-x86_64-minimal.iso 二、安装的过程 选择安装过程中语言 安装信息摘要页面 设置安装目的地 不做操作,直接使用自动分…

2.10、matlab中字符、数字、矩阵、字符串和元胞合并为字符串并将字符串以不同格式写入读出excel

1、前言 在 MATLAB 中,可以使用不同的数据类型(字符、数字、矩阵、字符串和元胞)合并为字符串,然后将字符串以不同格式写入 Excel 文件。 以下是一个示例代码,展示如何将不同数据类型合并为字符串,并以不…

LoadRunner12通过代理录制脚本。

1、目前LR12录制脚本比较简单的方式有两种,还有一种是失败率太高 我这边基本没有成功过就不赘述了,这边写的是通过LR的代理服务器来进行录制。 2、首选配置LR的录制界面点击录制按钮,会显示出录制配置界面 3、在录制配置界面录制模式选择’通…