HarmonyOS @builder方法里设置了modify不进modify的回调

@Builder
aa() {
  Text(this.msg)
    .enabled(false)
    .attributeModifier(this.modify)
}

build(){
  DemoInput({
    customBuilder :()=>{
      this.aa()
    }
  })
}

/**
 *
 */
export class DemoModify implements AttributeModifier<TextAttribute> {
  applyDisabledAttribute(instance: TextAttribute): void {
    instance.fontColor('red')
  }
}

@Preview
@Component
export struct DemoInput {
  @BuilderParam customBuilder?: () => void

  build() {
    Column() {
      if (this.customBuilder) {
        this.customBuilder()
      }
    }
  }
}
HarmonyOS
2天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
shlp

如果是使用自定义组件注册的方式,可参考如下示例代码:

class YellowButtonModifier implements AttributeModifier<ButtonAttribute> {
  applyNormalAttribute(instance: ButtonAttribute): void {
    instance.backgroundColor(Color.Red)
  }
  applyDisabledAttribute(instance: ButtonAttribute): void {
    instance.backgroundColor(Color.Black)
  }
}


@Component
struct Comp {
  @Builder customBuilder() {}
  @BuilderParam customBuilderParam: () => void = this.customBuilder;
  @Link enable:boolean
  build() {
    Column() {
      this.customBuilderParam()
    }
  }
}


@Entry
@Component
struct Page {
  @State enable: boolean = false
  @Builder compButton() {
    Button('disable').enabled(this.enable).attributeModifier(new YellowButtonModifier())
  }
  build() {
    Column() {
      Text('页面中效果是正常的')
      Flex({ justifyContent: FlexAlign.SpaceAround }) {
        // 点击没有反应
        Button('disable').enabled(this.enable).attributeModifier(new YellowButtonModifier())
        Button('enable').enabled(this.enable).attributeModifier(new YellowButtonModifier())
      }
      .width('100%')
      .padding({ top: 5 })


      Text('组件中第一次设置无效,当改变enable时,展示的上一次的modifier'')
      Comp({customBuilderParam:this.compButton,enable:this.enable})

      Button('修改组件中按钮的enable' + this.enable).onClick(() => {
        this.enable = !this.enable
      })
    }
  }
}
分享
微博
QQ
微信
回复
2天前
相关问题
HarmonyOS 点击事件方法
55浏览 • 1回复 待解决
HarmonyOS onAreaChange方法问题
62浏览 • 1回复 待解决
HarmonyOS @Watch方法没有改变
47浏览 • 1回复 待解决
组件设置visibility属性
577浏览 • 2回复 待解决
HarmonyOS 组件是否有销毁方法
659浏览 • 1回复 待解决
HarmonyOS Scroll方法执行改变
37浏览 • 1回复 待解决
HarmonyOS方法值如何转成vp
34浏览 • 1回复 待解决