HarmonyOS 鸿蒙Next @Builder装饰器修饰的自定义构建函数能否作为参数传递给另一个@Builder装饰器修饰的自定义构建函数

发布于 1周前 作者 h691938207 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next @Builder装饰器修饰的自定义构建函数能否作为参数传递给另一个@Builder装饰器修饰的自定义构建函数

@Builder装饰器修饰的自定义构建函数 能否作为参数 传递给另一个@Builder装饰器修饰的自定义构建函数?

以下为伪代码

@Builder export function testFunc1(@BuilderParam testFunc2: () => void) { } 由于无法对组件进行操作,只能传递builder函数testFunc1,所以想问下testFunc1中能否传递@Builder装饰器修饰的testFunc2,我要在testFunc1中动态决定是否展示testFunc2的UI内容

7 回复
这个解决了吗

你可以用[@Builder](/user/Builder)和[@BuilderParam](/user/BuilderParam)配合实现前端里具名插槽的效果,通过传[@BuilderParam](/user/BuilderParam)达到“传组件”的效果。
 

另外,如果你的[@Builder](/user/Builder)里的参数要传给[@Builder](/user/Builder)中的组件,可以使用$$接收,可以在文档里看一下这个的语法

@Builder export function testFunc1(@BuilderParam testFunc2: () => void) { } 这样写会报错:’@BuilderParam’ can decorate only member variables of custom components. <ArkTSCheck> Decorators are not valid here. <ArkTSCheck>

用法不对,建议先看看文档学下语法 这个是之前写的,你可以参考一下我Container的写法 https://developer.huawei.com/consumer/cn/forum/topic/0204155410571532238?fid=0109140870620153026

@Builder export function testFunc1(@BuilderParam testFunc2: () => void) { } 这样写会报错:’@BuilderParam’ can decorate only member variables of custom components. <ArkTSCheck> Decorators are not valid here. <ArkTSCheck>

在HarmonyOS开发中,使用@Builder装饰器可以极大地简化对象的构建过程,通过链式调用设置属性值。关于你的问题,@Builder装饰的自定义构建函数本身并不直接作为参数传递给另一个@Builder装饰的函数,因为@Builder主要用于生成构建器类,而非直接传递函数。

但是,你可以通过构建器对象来传递配置好的状态或属性到另一个构建器或方法中。如果确实需要类似的功能,可以考虑将构建器对象或构建过程中需要的参数封装成对象,然后作为参数传递。

如果问题依旧没法解决请加我微信,我的微信是itying888。

回到顶部