关于HarmonyOS 鸿蒙Next中$$在@Builder装饰器作用的疑问
关于HarmonyOS 鸿蒙Next中$$在@Builder装饰器作用的疑问 在文档"@Builder装饰器:自定义构建函数"里看到关于$$用法的介绍:
在@Builder方法内调用自定义组件或者其他@Builder方法,ArkUI提供$$作为按引用传递参数的范式。
我自己试了下,多层@Builder方法嵌套使用中不使用$$传递参数,对应的组件也会同步更新,那这个$$到底有什么含义?
@Entry
@ComponentV2
struct Index {
@Local message: string = 'Hello World';
number: number = 0;
build() {
Column() {
Button('点击改变文本')
.margin({bottom: 50})
.onClick(() => {
this.message = `Hello, ${this.number++}`;
})
red({message: this.message})
}
}
}
class Tmp {
message: string = ''
}
[@Builder](/user/Builder)
function red(message: Tmp) {
Button(message.message)
.margin({bottom: 50})
.backgroundColor(Color.Red)
green({message: message.message})
}
[@Builder](/user/Builder)
function green(message: Tmp) {
Button(message.message)
.margin({bottom: 50})
.backgroundColor(Color.Green)
blue({message: message.message})
}
[@Builder](/user/Builder)
function blue(message: Tmp) {
Button(message.message)
.backgroundColor(Color.Blue)
}
![image](
更多关于关于HarmonyOS 鸿蒙Next中$$在@Builder装饰器作用的疑问的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-builder-V5#按引用传递参数看官网的这个示例就能看出来,你的示例,还不能看出来$$的作用。
class Tmp {
paramA1: string = ''
}
@Builder
function overBuilder($$: Tmp) {
Row() {
Column() {
Text(`overBuilder===${$$.paramA1}`)
HelloComponent({ message: $$.paramA1 })
}
}
}
@Component
struct HelloComponent {
[@Prop](/user/Prop) message: string;
build() {
Row() {
Text(`HelloComponent===${this.message}`)
}
}
}
@Entry
@Component
struct Parent {
@State label: string = 'Hello';
build() {
Column() {
// Pass the this.label reference to the overBuilder component when the overBuilder component is called in the Parent component.
overBuilder({ paramA1: this.label })
Button('Click me').onClick(() => {
// After Click me is clicked, the UI text changes from Hello to ArkUI.
this.label = 'ArkUI';
})
}
}
}
上面代码,是官网示例,HelloComponent中message使用@Prop修饰,使用$$,才能将tmp应用传递到HelloComponent中,如果你只是封装一个对象进行转递,调用HelloComponent肯定会报错的
更多关于关于HarmonyOS 鸿蒙Next中$$在@Builder装饰器作用的疑问的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
我的例子用的是状态管理器V2版本的装饰器,文档给出的例子还只停留在V1版本中,可能在V2版本里就不需要这个了?
那这么说,$$在文档中写的也是v1语法,
应该是了,文档里涉及$$的用例用的都是V1版本,没看到用在V2的,官方不新增的话我就认为不需要了😂,
在HarmonyOS鸿蒙Next中,$$
在@Builder
装饰器中的作用并非一个直接由系统定义或广泛认可的符号。HarmonyOS的ArkUI框架中,@Builder
装饰器主要用于简化组件的构建过程,通过链式调用方式设置组件属性。然而,$$
这一符号在标准的@Builder
用法中并没有特定的含义或作用。
在编程实践中,$$
这样的符号有时会被用作内部实现细节的一部分,比如在某些编译时注解处理器或代码生成工具中,用于标记特定的代码片段或生成特定的代码逻辑。但在HarmonyOS官方文档中,并没有提及$$
与@Builder
装饰器的直接关联。
如果你在代码中遇到了$$
与@Builder
一起使用的情况,这可能是一个特定库、框架或工具链的自定义扩展,而非HarmonyOS标准API的一部分。为了准确理解其作用,建议查阅该库、框架或工具链的官方文档或源代码。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html