Harmony AttributeUpdater 基本使用

117 阅读1分钟

1 继承 AttributeUpdater 使用方式跟 AttributeModifier 一样

class ButtonModifierImpl extends   AttributeUpdater<ButtonModifier> {

  isClick = false;

  initializeModifier(instance: ButtonModifier): void {
    console.log("======initializeModifier=")
    instance.backgroundColor(Color.Red)
  }

  onComponentChanged(component: ButtonModifier): void {
    console.log("=======onComponentChanged");
  }

  applyNormalAttribute(instance: ButtonModifier): void {
    console.log("=======applyNormalAttribute");
    instance.backgroundColor(Color.Blue)
  }
}

1.1 initializeModifier 第一次创建就会执行。applyNormalAttribute不执行。

2 使用

@State
buttonModifier : ButtonModifierImpl =  new ButtonModifierImpl();
Column(){
  Button("测试Modifier")
    .attributeModifier(this.buttonModifier)
  Button("测试Modifier")
    .backgroundColor(Color.Blue)
    .onClick((event)=>{
      console.log("======click");
      this.buttonModifier.attribute?.backgroundColor(Color.Green);
      // this.buttonModifier.isClick = !this.buttonModifier.isClick;
    })
}

2.1 当自定义的属性发生改变的时候或者其他状态触发的时候AttributeModifier中定义的方法会执行。 2.2 AttributeUpdater 与 AttributeModifier 不同的是 AttributeUpdater 可以直接获取 attribute 进行属性修改。

 this.buttonModifier.attribute?.backgroundColor(Color.Green)