HarmonyOS 鸿蒙Next ArkTS关于@observed装饰器的使用
HarmonyOS 鸿蒙Next ArkTS关于@observed装饰器的使用 需要用observed实现功能,使用过程中遇到一些问题。
使用objiectlink在子组件中(当然不能在@entry组件)定义变量A,使用@state在父组件定义变量B。
在父组件中使用子组件时,对变量A初始化:
如果变量的类型是通过 父级.子级 的方式,会报错(The type of the @ObjectLink property ‘Xshuju’ can only be objects of classes decorated with @Observed class decorator in ets (not ts).):
父组件截图:
子组件截图:
报错截图:
解决方法:
1.在子组件中定义一个类并继承在其他文件中的类(在子组件文件使用需要通过 父级.子级方式引用的)。
2.在其他文件中定义时,不要定义在命名空间(namespace)中。
更多关于HarmonyOS 鸿蒙Next ArkTS关于@observed装饰器的使用的实战教程也可以访问 https://www.itying.com/category-93-b0.html
刚接触ARKTS,也遇到了相同的问题能否详细的说一下。感谢
更多关于HarmonyOS 鸿蒙Next ArkTS关于@observed装饰器的使用的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
ArkTS的UI代码和功能代码是可以写在同一个ets文件(代码文件的后缀是ets)里面。
这个问题,需要把observed
装饰的类直接写在ets文件最外层,不能被包裹,例如:写在namespace中。
如果被包裹了(在其他UI ets文件中调用接口时,就会报错),就需要在最外层新建一个类并继承在模块内部的类,然后导出,同时也要使用observed
装饰才行。
文件后缀是.ts
的,可以使用重构,然后把后缀改为.ets
,不然在其他文件无法调用接口,代码自动补全也不会显示这个接口。特别是对于使用模板创建的ability文件。
谢谢 分享 经验哈
互相学习,后来发现,如果继承,只需要在一个地方继承就可以了,其他地方也能正常使用,不需要每次都继承,
在HarmonyOS鸿蒙Next中,@Observed
装饰器用于标记一个类,使其能够被@ObjectLink
或@Prop
装饰的属性观察。@Observed
装饰的类通常用于管理状态,并且当该类实例的状态发生变化时,依赖该状态的UI组件会自动更新。
@Observed
装饰器的主要作用是将一个类标记为可观察的,这样在类中的属性发生变化时,相关的UI组件可以自动重新渲染。使用@Observed
装饰的类通常与@ObjectLink
或@Prop
装饰的属性一起使用,以实现状态与UI的绑定。
例如:
@Observed
class Counter {
count: number = 0;
}
在这个例子中,Counter
类被@Observed
装饰,表示它的实例可以被观察。当count
属性的值发生变化时,使用@ObjectLink
或@Prop
绑定该实例的UI组件会自动更新。
@Observed
装饰器通常用于管理复杂的状态逻辑,尤其是在需要跨组件共享状态时。通过@Observed
和@ObjectLink
或@Prop
的结合,开发者可以轻松实现状态驱动的UI更新,而无需手动管理状态的同步。
总结来说,@Observed
装饰器在鸿蒙Next中用于标记可观察的类,使其状态变化能够自动触发UI更新。