Builder-公用组建封装和 按引用传递 改变数据

news/2025/3/15 17:05:15/文章来源:https://www.cnblogs.com/eric-share/p/18773914

 


@Entry
@Component
struct BuilderPage {

// 组建内的
@Builder compButtonBuilder(icon:Resource,text:string,callback:()=>void){
Button() {
Row({ space: 10 }) {
Image(icon)
.width(25)
.height(25)
Text(text)
.fontColor(Color.White)
.fontSize(25)
}
}.width(120)
.height(50)
.onClick(callback)
}

build() {
Column() {
Row({ space: 50 }) {

// Button() {
// Row({ space: 10 }) {
// Image($r('app.media.icon_edit'))
// .width(25)
// .height(25)
// Text('编辑')
// .fontColor(Color.White)
// .fontSize(25)
// }
// }.width(120)
// .height(50)
// .onClick(() => console.log('编辑'))

// this.compButtonBuilder($r('app.media.icon_edit'),'编辑',() => console.log('编辑'))
globalButtonBuilder($r('app.media.icon_edit'),'编辑',() => console.log('编辑'))

// Button() {
// Row({ space: 10 }) {
// Image($r('app.media.icon_send'))
// .width(25)
// .height(25)
// Text('发送')
// .fontColor(Color.White)
// .fontSize(25)
// }
// }.width(120)
// .height(50)
// .onClick(() => console.log('发送'))

// this.compButtonBuilder($r('app.media.icon_send'),'发送',() => console.log('发送'))
globalButtonBuilder($r('app.media.icon_send'),'发送',() => console.log('发送'))

}
}.width('100%')
.height('100%')
.justifyContent(FlexAlign.Center)
}
}


// 组建内的
@Builder export function globalButtonBuilder(icon:Resource,text:string,callback:()=>void){
Button() {
Row({ space: 10 }) {
Image(icon)
.width(25)
.height(25)
Text(text)
.fontColor(Color.White)
.fontSize(25)
}
}.width(120)
.height(50)
.onClick(callback)
}


demo2
@Entry
@Component
struct BuilderParameterPage {
@State count: number = 0;

build() {
Column({ space: 50 }) {
//按值传递
valueTextBuilder(this.count)
//按引用传递
referenceTextBuilder({ count: this.count })
Row({ space: 50 }) {
Button('-1').onClick(() => {
this.count--;
})
Button('+1').onClick(() => {
this.count++;
})
}
}.width('100%')
.height('100%')
.justifyContent(FlexAlign.Center)
}
}

@Builder function valueTextBuilder(count: number) {
Text(`按值传递: ${count}`)
.fontSize(30)
.fontWeight(FontWeight.Bold)
}

@Builder function referenceTextBuilder(obj: { count: number }) {
Text(`按引用传递: ${obj.count}`)
.fontSize(30)
.fontWeight(FontWeight.Bold)
}

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

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

相关文章

【第 8 期】搜索客 Meetup - Elasticsearch 的一些“双刃剑”特性

本次活动由 搜索客社区、极限科技(INFINI Labs) 联合举办,活动邀请到 INFINI Labs 搜索运维专家 金端 来分享 Elasticsearch 中一些典型的“双刃剑”特性,以及如何在实际使用中权衡和应对。欢迎预约直播观看 ~ 活动主题:Elasticsearch 的一些“双刃剑”特性 活动时间:202…

clion/idea/pycharm项目配置

环境搭建与配置 pycharm篇 markdown as root idea篇 clion篇构建 cmake -S src -B build $CMAKE_OPTIONS 编译 cmake --build 配置deployment,cmake(cmake配置编译目录,引用环境变量,cmake环境变量引用$CMAKE_OPTIONS) ccache配置 ccache弄一个gcc和g++的软链,放在PATH最…

web68笔记(+禁用print_r、highlight)

web68 打开就直接说 Warning: highlight_file() has been disabled for security reasons in /var/www/html/index.php on line 19 猜跟之前代码一致,加了过滤 然后这⾥还把print_r给禁了,⽤var_dump()吧 c=var_dump(scandir("/")); 还是在跟⽬录 flag.txt 既然hig…

健身相关

后仰?10次 如何管理自己的症状 急性期https://new.qq.com/rain/a/20210819A094EC00犀牛数据地点+纳税排名

文本弹窗选择

@Entry@Componentstruct TextPickerDialogPage { fruits: string[] = [苹果, 橘子, 香蕉, 鸭梨, 西瓜] @State selectedIndex: number = 0 build() { Column({ space: 50 }) { Text(this.fruits[this.selectedIndex]) .fontWeight(FontWeight.Bold) .…

AP csa FRQ Q1 Past Paper 五年真题汇总 2023-2019

Author(wechat): bigshuang2020 ap csa tutor, AP计算机科学a老师 国际教育编程老师, 擅长答疑讲解,带学生实践学习。热爱创作,作品:ap csa原创教案,真题梳理汇总,FRQ专题冲刺。2023 FRQ Question 1 This question involves the appointmentBook class, which provides me…

自带弹窗-》删除功能提示

@Entry@Componentstruct AlertDialogPage { build() { Column() { Button(删除) .backgroundColor(Color.Red) .onClick(() => { AlertDialog.show( { title: 删除该记录?, //弹窗标题 message: 删除…

ASE90N25-ASEMI工业电机专用ASE90N25

ASE90N25-ASEMI工业电机专用ASE90N25编辑:ll ASE90N25-ASEMI工业电机专用ASE90N25 型号:ASE90N25 品牌:ASEMI 封装:TO-247 批号:最新 最大漏源电流:90A 漏源击穿电压:250V RDS(ON)Max:26mΩ 引脚数量:3 沟道类型:N沟道MOS管、中低压MOS管 漏电流:ua 特性:N沟道MO…

温度转化和蟒蛇绘制

蟒蛇绘制 import turtle turtle.setup(650,360,600,200) turtle.penup() turtle.fd(-250) turtle.pendown() turtle.pensize(25) turtle.pencolor("pink") turtle.seth(-40) for i in range(4): turtle.circle(40,80) turtle.circle(-40,80) turtle.circle(40,80/2) …

Java面向对象编程(OOP)

面向过程&面向对象 面向过程思想:步骤清晰简单,第一步该做什么,第二步该做什么... 适合处理一些较为简单的问题 线性思维面向对象四思想:物以类聚,分类的思维模式,思考问题首要解决问题需要哪些分类,然后对这些分类进行单独思考,最后才对某个分类下的细节进行面向过…

第二章作业

由于一至三题只存了源代码,自己写的没有保存,所以仅以截图展示。四至八题则采取代码和截图一起的方式展示。 2.4 import turtle turtle.setup(650,360,800,200) turtle.penup() turtle.fd(-250) turtle.pendown() turtle.pensize(25) turtle.seth(-40) colors = ["blue&…

book_第2章例题

1.温度转化(符号在后) 2.温度转化(符号在前) 3.蟒蛇例题