学习笔记(四十四):自定义组件@LocalBuilder装饰器

news/2025/2/24 10:17:12/文章来源:https://www.cnblogs.com/xqxacm/p/18566577

概述:

当开发者使用@Builder做引用数据传递时,会考虑组件的父子关系,使用了bind(this)之后,组件的父子关系和状态管理的父子关系并不一致。

为了解决组件的父子关系和状态管理的父子关系保持一致的问题,引入@LocalBuilder装饰器。

@LocalBuilder拥有和局部@Builder相同的功能,且比局部@Builder能够更好的确定组件的父子关系和状态管理的父子关系。

示例:

1、定义自定义组件

// 自定义组件
@Component
export struct CommonView{@State msg:string = "子 Child"@Builder customBuilder() {};@BuilderParam customBuilderParam:()=>void=this.customBuilderbuild() {Column() {this.customBuilderParam()}}
}

2、使用该自定义组件 

import { CommonView } from "../components/CommonView";
@Entity
@Component
export struct Main {@State msg:string = "父Parent"// 通过this.componentBuilder的形式传给子组件@BuilderParam customBuilderParam,this指向在Child的label,即“Child”。
  @Builder customerBuilder(){Text(this.msg)}// 过this.componentBuilder的形式传给子组件@BuilderParam customBuilderParam,this指向Parent的label,即“Parent”。
  @LocalBuilder customerBuilder(){Text(this.msg)}build() {Column() {Text('Main')CommonView({customBuilderParam:this.customerBuilder})Text('End')}.width('100%').justifyContent(FlexAlign.Center)}
}

使用@Builder装饰的效果图:

使用@LocalBuilder装饰的效果图:

 

@LocalBuilder和@Builder区别说明

说明:

@Builder componentBuilder()通过this.componentBuilder的形式传给子组件@BuilderParam customBuilderParam,this指向在Child的label,即“Child”。

@LocalBuilder componentBuilder()通过this.componentBuilder的形式传给子组件@BuilderParam customBuilderParam,this指向Parent的label,即“Parent”。

 

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

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

相关文章

推荐5款程序员必备的画图工具,效率提升利器!

ProcessOn ProcessOn是一款专业强大在线作图工具,提供AI生成思维导图流程图,支持思维导图、流程图、组织结构图、网络拓扑图、鱼骨图、UML图等多种图形。同时可实现人与人之间的实时协作和共享,提升团队工作效率。在线访问地址:https://www.processon.com丰富的图形素材库:…

定时器JS深入理解解读

set&clear interval&timeout 相信不论是老油条还是新手小白,你早就听过或者用过setInterval和setTimeout这俩哥们儿和他们的死敌clearInterval和clearTimeout了吧,作为项目里的“老面孔”和面试高频考点,今天GJ504b就带大家深入解读这四大活宝😀setInterval/setT…

not in 和 not exists 比较和用法

尽量不要使用not in(它会调用子查询),而尽量使用not exists(它会调用关联子查询)。查询语句使用了not in,那么对内外表都进行全表扫描,没有用到索引;而not exists的子查询依然能用到表上的索引。所以无论哪个表大,用not exists都比not in 要快。 NOT IN 查询返回空结果:…

Flash动画综合设计并发布、嵌入到网页

【作业要求】 自己选定主题,创意制作Flash动画,并与网页进行集成 【实验环境】 l 所需硬件环境为微机; l 所需软件环境为VS code 【创意内容】 因为我比较爱国,所以我选定的主题都是关于国旗的【关键步骤】 1、选好想要做的内容,找到一些视频; 2、查找关于任如何在浏览器…

洛谷P11290 【MX-S6-T2】「KDOI-11」飞船

Problem本题开启Special Judge,无需考虑精度问题Solve 一开始想到这个用DP写,但是不知道怎么定义 去"提交记录"旁边的神秘按钮得知速度可以作为第二维,且类似于背包 那么我们就可以按照背包列出定义 前i个加油站,花费时间j...... 但是这里是求最小花费,所以我们…

Analogue Pocket 软硬件实验预告

如题,还在测试中,预计会在今年内发布。

.NET云原生应用实践(六):多租户初步

本章目标多租户简介 实现public租户下的用户数据隔离出于开发进度考虑,本章暂不会完全实现多租户的整套体系,而是会实现其中的一小部分:基于默认public租户的数据隔离,并在本章节中会讨论多租户的实现框架结构。在后续的系列文章章节中,我们会完成多租户的实现。多租户(M…

【MX-S7】梦熊 NOIP 2024 模拟赛 3 SMOI Round 2

hdk俩签到俩不可做是吧。Rank【MX-S7-T1】「SMOI-R2」Happy Card 签到题一号,以为撑死评个黄但没想到那么多人不会打扑克。 考虑炸弹也是三带一,出三带一肯定更优秀。 考虑将所有牌变为若干个三张和剩余的,那么三张先带单张,再将对子拆开带。那么现在就有以下几种情况:单张…

我勒湘军杯

今天以体验队参加了湘军杯,感觉和ctf差别挺大 使用sql注入、xss等方式对靶场漏洞进行挖掘,漏洞挖掘感觉需要把知识系统的利用起来, 虽然也是ctf的知识,但是感觉ctf的目标很明确,获取flag就结束,而且可以在网上搜索到类似的步骤解题

Springboot如何利用模板,快速生成word文档?

前言 大家好,我是小徐啊。我们在使用SpringBoot开发的时候,有时候会遇到需要生成word文档的情况。一般情况下,就是将一些数据填充到word文档里面。其实Java是有开源的第三方jar包的。今天,小徐就来介绍下如何在SpringBoot里面生成word文档。 如何设置 首先,我们需要在pom.…

HCIA-03 常用协议 ARP TCP UDP ICMP

主要介绍了常用协议和IP协议的基础知识, 包括TCP/UDP协议的工作原理、ARP地址解析协议的作用、ICMP协议用于网络控制和查询的信息传递等。 重点讲述了TCP协议的三次握手建立连接、数据传输与四次挥手断开连接的过程 以及IP协议在网络层实现跨广播域通信的基本原理。 此外,还提…