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

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

阅读 643
1 个回答

可以通过@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%')
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进