可按照下面方式修改,可刷新界面该问题的关键是处理this指针指向,TestParent和TestChild修改如下@Component struct TestParent { private name: string = "TestParent1"; @State data: Object = new MyData(new MyDataInner(new MyDataInnerInner(111))) @BuilderParam outerBuilder: (wrapper: IDataWrapper<Object>) => void @Builder BuilderInParent($$: IDataWrapper<Object>) { // // 没问题的写法,用的是this的data // Stack() { // this.outerBuilder({data: this.data}) // // 目的是为了在这里重写builder,加上背景色等样式 // }.backgroundColor(Color.Red) // 有问题的写法,用的是传参过来的data。因为这个data不能直接放在TestParent中,它会有多个 Stack() { this.outerBuilder({data: $$.data}) // 目的是为了在这里重写builder,加上背景色等样式 }.backgroundColor(Color.Red) } build() { TestChild({ data: this.data, outerBuilder1: this.BuilderInParent, outerBuilder: this.outerBuilder }) } } @Component struct TestChild { private name: string = "TestChild"; @Link data: Object; @BuilderParam outerBuilder1: (data: IDataWrapper<Object>) => void @BuilderParam outerBuilder: (data: IDataWrapper<Object>) => void build() { Stack() { this.outerBuilder1({ data: this.data }) Button("Click").onClick(() => { this.data = new MyData(new MyDataInner(new MyDataInnerInner(222))) }) }.width('100%').height('100%') } }CustomDialogController不支持动态创建也不支持动态修改。如果场景需要动态创建或者修改请使用opencustomdialog,componentcontent支持@BuilderParam,使用中注意要修改同一个对象或者调用update接口。
可按照下面方式修改,可刷新界面
该问题的关键是处理this指针指向,TestParent和TestChild修改如下
CustomDialogController不支持动态创建也不支持动态修改。
如果场景需要动态创建或者修改请使用opencustomdialog,componentcontent支持@BuilderParam,使用中注意要修改同一个对象或者调用update接口。