HarmonyOS 使用@builder和@builderParam时,@builder中的ui不会动态更新

HarmonyOS 使用@builder和@builderParam时,@builder中的ui不会动态更新。

HarmonyOS
2天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
FengTianYa

​@Builder函数中使用$$按引用传递,无法配合@State直接使用,只有传入一个参数,且参数需要直接传入对象字面量才会按引用传递该参数,其余传递方式均为按值传递。按引用传递参数时,传递的参数可为状态变量,且状态变量的改变会引起@Builder方法内的UI刷新。

相关文档:​https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-builder-V5

参考demo​

@Observed 
class Tmp { 
  text: string = "Hello" 
} 
 
@Builder function customBuilder($$: Tmp) { 
  Column() { 
    Text($$.text) 
      .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%') 
  } 
}
分享
微博
QQ
微信
回复
2天前
相关问题
@Builder使用引用时异常
831浏览 • 1回复 待解决
HarmonyOS 如何在builder函数传入组件
260浏览 • 0回复 待解决
@Extend、@Styles、@Builder 区别?
347浏览 • 1回复 待解决
HarmonyOS 关于使用@BuilderParam问题
273浏览 • 1回复 待解决