#鸿蒙通关秘籍#如何在HarmonyOS中实现多层嵌套类对象属性变化的监听?

HarmonyOS
2024-12-03 12:05:36
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
星H光PM

在HarmonyOS中,通过使用@Observed装饰器和@ObjectLink装饰器,可以实现对多层嵌套类对象属性变化的监听。具体实现步骤如下:

  1. 创建嵌套类结构:
    • 第三层类:ThirdGoodsItem,用@Observed修饰,表示商品的详细数据。
    • 第二层类:SecondGoodsItemList,用@Observed修饰,包含多个ThirdGoodsItem对象。
    • 第一层类:FistGoodsModel,包含SecondGoodsItemList对象。
@Observed
export class ThirdGoodsItem {
  imgSrc: Resource;
  price: string;

  constructor(imgSrc: Resource, price: string) {
    this.imgSrc = imgSrc;
    this.price = price;
  }
}

@Observed
export class SecondGoodsItemList {
  itemList: Array<ThirdGoodsItem>;

  constructor(itemList: Array<ThirdGoodsItem>) {
    this.itemList = itemList;
  }
}

export class FistGoodsModel {
  itemList: SecondGoodsItemList;

  constructor(itemList: SecondGoodsItemList) {
    this.itemList = itemList;
  }
}
  1. 使用@ObjectLink在自定义组件中关联实例,从而实现UI更新。
@Component
export default struct GoodViewStruct {
  @Link model: FistGoodsModel;

  build() {
    Column() {
      SecondViews()
    }
  }
}

@Component
struct SecondViews {
  @ObjectLink data: SecondGoodsItemList

  build() {
    List() { ... }
  }
}

@Component
struct ThirdView {
  @ObjectLink item: ThirdGoodsItem

  build() {
    Column() { ... }
  }
}
  1. 更新数据时,会自动触发UI刷新。
this.itemList.forEach((item, index) => {
  item.imgSrc = originItemList[index].imgSrc;
  item.price = originItemList[index].price;
});

分享
微博
QQ
微信
回复
2024-12-03 13:17:03
相关问题
如何监听数组内对象属性变化
2472浏览 • 1回复 待解决