HarmonyOS 使用@state装饰器,监听Array数组对象中的属性,如果不通过增删改的方式想监听属性,有没有最佳实践

HarmonyOS
2天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
superinsect

可以通过@Observed装饰器和@ObjectLink装饰器 嵌套类对象属性变化参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-observed-and-objectlink-V5#%E5%AF%B9%E8%B1%A1%E6%95%B0%E7%BB%84

demo:

@Observed
class InnerMessageVo {
  id?: number;
  readState?: boolean;

  constructor(id: number, readState: boolean) {
    this.id = id;
    this.readState = readState;
  }
}

@Component
struct ViweA {
  @ObjectLink a: InnerMessageVo;

  build() {
    Row() {
      Text(`${this.a.readState}`)
    }
  }
}

@Entry
@Component
struct Index {
  @State arr1: InnerMessageVo[] = [new InnerMessageVo(1, false), new InnerMessageVo(2, false)]

  build() {
    Row() {
      Column() {
        List() {
          ForEach(this.arr1, (item: InnerMessageVo, index: number) => {
            ViweA({ a: this.arr1[index] })
          })
          ListItem() {
            Button('change')
              .onClick(() => {
                console.log('false');
                this.arr1[1].readState = true
              })
          }
        }
      }
      .width('100%')
    }
    .height('100%')
  }
}
分享
微博
QQ
微信
回复
2天前
相关问题
如何监听数组对象属性变化
2347浏览 • 1回复 待解决
网络监听最佳实践有哪些?
452浏览 • 1回复 待解决
ohpm dayjs编译不通过
182浏览 • 1回复 待解决
Hsp中使用图片 编译不通过
1742浏览 • 1回复 待解决