HarmonyOS 鸿蒙Next如何监听数组内对象属性变化

发布于 1周前 作者 h691938207 来自 鸿蒙OS

HarmonyOS 鸿蒙Next如何监听数组内对象属性变化 数组内存储对象示例,需要对对象的属性变化进行监听

4 回复

更多关于HarmonyOS 鸿蒙Next如何监听数组内对象属性变化的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


通过@Observed配合@ObjectLink装饰符实现。@Observed用于类,@ObjectLink用于变量。

步骤1:在类上使用@Observed

[@Observed](/user/Observed)
class ClassA {
  public name: string
  public c: number
  public id: number

  constructor(c: number, name: string = 'OK') {
    this.name = name
    this.c = c
  }
}

步骤2:在组件变量使用@ObjectLink

@Component
struct ViewA {
  label: string = 'ViewA1'
  [@ObjectLink](/user/ObjectLink) a: ClassA

  build() {
    Row() {
      Button(`ViewA [${this.label}] this.a.c= ${this.a.c} +1`)
        .onClick(() => {
          this.a.c += 1
        })
    }.margin({ top: 10 })
  }
}

反正都要拆分父子组件,用prop或者Link有什么区别,

在HarmonyOS(鸿蒙)系统中,监听数组内对象属性变化并不直接支持类似于Vue或React中的响应式数据绑定机制。鸿蒙系统主要基于其自主研发的ArkUI框架,它提供了数据绑定和事件处理的能力,但针对数组内对象属性的变化监听,通常需要开发者手动实现。

一种常见的方法是使用观察者模式(Observer Pattern)。你可以定义一个观察者接口,让需要监听属性变化的类实现这个接口。当数组中的对象属性发生变化时,该对象主动通知所有注册的观察者。

具体步骤如下:

  1. 定义一个观察者接口,包含更新方法。
  2. 让数组中的对象类实现一个被观察者接口,该接口包含注册、移除观察者以及通知观察者的方法。
  3. 在对象属性变化时,调用通知观察者的方法,传递变化的信息。
  4. 在需要监听变化的组件中,实现观察者接口,并注册为被观察对象的观察者。

这种方法虽然灵活,但需要开发者手动管理观察者和被观察者的关系,以及处理属性变化的通知逻辑。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部