在HarmonyOS NEXT中使用@builder和@builderParam时,@builder中的ui不会动态更新的解决方法?

阅读 539
1 个回答

@Builder函数中使用$$按引用传递,无法配合@State直接使用,只有传入一个参数,且参数需要直接传入对象字面量才会按引用传递该参数,其余传递方式均为按值传递。按引用传递参数时,传递的参数可为状态变量,且状态变量的改变会引起@Builder方法内的UI刷新。
相关文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides... 参考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%') 
  } 
}

本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进