回复
     浅入@ObservedV2装饰器和@Trace装饰器 原创
是汉堡黄
 发布于 2025-11-3 23:07
 浏览
 0收藏
🎯 V2: 浅入@ObservedV2装饰器和@Trace装饰器
📌 见解
@ObservedV2和@Trace提供了对嵌套类对象属性变化直接观测的能力
⚠️ 使用场景:
嵌套类、继承类、@Trace装饰基础类型数据、对象数据、Map类型、Set类型、Date类型
🧩 拆解
/** 嵌套类型*/
@ObservedV2
class CaseModelOne {
  str1: CaseModelThree = new CaseModelThree()
}
/** 继承类型*/
@ObservedV2
class CaseModelTwo {
  @Trace str1: string = 'CaseModelTwo_原始'
}
class CaseModelTwoSon extends CaseModelTwo{
  getStr() {
    this.str1 = 'CaseModelTwoSon_更新'
    return this.str1
  }
}
/** 基础类型*/
@ObservedV2
class CaseModelThree {
  @Trace str1: string = 'CaseModelThree_原始'
}
/** 对象数组类型*/
@ObservedV2
class CaseModelFour {
  @Trace str1?: string = 'CaseModelFour_原始'
  constructor(name?: string) {
    this.str1 = name
  }
}
@ObservedV2
class CaseModelFourArray {
  @Trace caseModelFourArray: CaseModelFour[] = [new CaseModelFour(), new CaseModelFour(), new CaseModelFour(), new CaseModelFour()]
}
/** Map类型*/
@ObservedV2
class CaseModelFive {
  @Trace caseModelFiveMap: Map<number, string> = new Map([[0, "a"], [1, "b"], [3, "c"]]);
}
/** Set类型*/
@ObservedV2
class CaseModelSix {
  @Trace caseModelSixSet: Set<string> = new Set(['0', '1', '2', '3'])
}
/** Date类型*/
@ObservedV2
class CaseModelSeven {
  @Trace CaseModelSevenDate: Date = new Date('2021-08-08')
}
@Entry
@ComponentV2
struct ObservedV2AndTrace {
  private caseModelOne: CaseModelOne = new CaseModelOne()
  private caseModelTwoSon: CaseModelTwoSon = new CaseModelTwoSon()
  private caseModelThree: CaseModelThree = new CaseModelThree()
  private caseModelFourArray: CaseModelFourArray = new CaseModelFourArray()
  private caseModelFive: CaseModelFive = new CaseModelFive()
  private caseModelSix: CaseModelSix = new CaseModelSix()
  private caseModelSeven: CaseModelSeven = new CaseModelSeven()
  build() {
    Row() {
      Column() {
        Text(this.caseModelOne.str1.str1)
          .fontWeight(FontWeight.Bold)
        Text(this.caseModelTwoSon.str1)
          .fontWeight(FontWeight.Bold)
        Text(this.caseModelThree.str1)
          .fontWeight(FontWeight.Bold)
        Text(this.caseModelFourArray.caseModelFourArray[0].str1)
          .fontWeight(FontWeight.Bold)
        Text(this.caseModelFive.caseModelFiveMap[0])
          .fontWeight(FontWeight.Bold)
        Text(`${this.caseModelSix.caseModelSixSet.values()}`)
          .fontWeight(FontWeight.Bold)
        Text(`${this.caseModelSeven.CaseModelSevenDate}`)
          .fontWeight(FontWeight.Bold)
        Button('change all value')
          .onClick(() => {
            this.caseModelOne.str1.str1 = 'caseModelOne_更新'
            this.caseModelTwoSon.getStr()
            this.caseModelThree.str1 = 'caseModelThree_更新'
            this.caseModelFourArray.caseModelFourArray[0] = new CaseModelFour('caseModelFourArray_更新')
            this.caseModelFive.caseModelFiveMap[0] = 'caseModelFiveMap_更新'
            this.caseModelSix.caseModelSixSet = new Set(['4', '5', '6', '7']);
            this.caseModelSeven.CaseModelSevenDate = new Date('2021-10-08')
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}
📝 @ObservedV2装饰器和是状态管理V2中相对核心的能力之一,在日常开发中是必然要掌握的
🌸🌼🌺
©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
 分类 
 标签 
   
        赞
        
 
        收藏 
      
 回复
  相关推荐
 



















