鸿蒙extends和@Observed和constructor构造函数的复习
@Observed
class ContactArray extends Array<Contact> {
}
@Observed
class ContactGroup {
title: string;
contacts: ContactArray
constructor(title: string, contacts: ContactArray) {
this.title = title;
this.contacts = contacts;
}
}
在上面代码片段中,定义了两个类:ContactArray
和 ContactGroup
。ContactArray
是一个继承自 Array<Contact>
的类,而 ContactGroup
是一个包含标题和联系人列表的类。这里使用了 @Observed
装饰器,它用于标记一个类,使得它的属性变化能够被框架检测到,从而触发视图的更新。
在 ContactGroup
类中,title
属性用于存储联系人组的标题,而 contacts
属性是一个 ContactArray
类型的实例,用于存储联系人列表。ContactArray
由于继承了 Array<Contact>
,因此它本质上是一个数组,但是它的变化会被 @Observed
装饰器检测到。
这种设计模式在HarmonyOS开发中非常有用,尤其是当您需要创建一个包含可观察数组的复杂对象时。通过这种方式,可以确保当数组或数组中的对象发生变化时,依赖于这些数据的UI组件能够自动更新。
在 ContactGroup
类的构造函数中,constructor
方法用于初始化新创建的 ContactGroup
实例。这个构造函数接收两个参数:
title: string
:这是用来指定联系人组标题的字符串。contacts: ContactArray
:这是一个ContactArray
类型的对象,它包含了一系列的联系人。
构造函数的工作流程如下:
this.title = title;
:将传入的title
参数值赋给ContactGroup
实例的title
属性。this.contacts = contacts;
:将传入的contacts
参数值赋给ContactGroup
实例的contacts
属性。
由于 ContactArray
类继承自 Array<Contact>
,contacts
属性将存储一个 Contact
类型的数组。这意味着 ContactGroup
实例将能够包含一个联系人列表,每个联系人都是一个 Contact
对象。
在HarmonyOS开发中,这种构造函数的使用模式允许您在创建 ContactGroup
实例时,同时指定联系人组的标题和联系人列表。这样,可以方便地管理和组织联系人数据,并在UI组件中使用这些数据。
请注意,为了使 @Observed
装饰器正常工作,需要确保在构建UI时正确地使用了这些类,并且适当地使用了数据绑定和状态管理机制。