HarmonyOS 鸿蒙Next 使用@builder和@builderParam时,@builder中的ui不会动态更新
HarmonyOS 鸿蒙Next 使用@builder和@builderParam时,@builder中的ui不会动态更新
[@Builder](/user/Builder)函数中使用$$按引用传递,无法配合[@State](/user/State)直接使用,只有传入一个参数,且参数需要直接传入对象字面量才会按引用传递该参数,其余传递方式均为按值传递。按引用传递参数时,传递的参数可为状态变量,且状态变量的改变会引起[@Builder](/user/Builder)方法内的UI刷新。 按照文档传递的参数均为第二种方式。另不修改this.message,则与之对应Builder里面的组件并不会刷新
相关文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-builder-V5
[@Observed](/user/Observed)
class Tmp {
text: string = "Hello"
}
@Builder function customBuilder($$: Tmp) {
Column() {
Text($$.text)
.fontSize(50)
Text($$.person.name)
.fontSize(50)
}
}
@Entry
@Component
struct BuilderTest {
@State message: string = ‘Hello’;
@State tmp: Tmp = new Tmp()
build() {
Column() {
Text(‘change’)
.fontSize(50)
.onClick(() => {
this.tmp.text = “Message”
this.message = “Message”
})
// 无法修改
customBuilder(this.tmp)
// 可以修改
customBuilder({text: this.message})
}
.height(‘100%’)
.width(‘100%’)
}
}
更多关于HarmonyOS 鸿蒙Next 使用@builder和@builderParam时,@builder中的ui不会动态更新的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
且参数需要直接传入对象字面量才会按引用传递该参数
对象字面量是什么意思?怎么才算直接传入对象字面量