HarmonyOS 鸿蒙Next 使用@Observed与@ObjectLink机制进行深度观测

HarmonyOS 鸿蒙Next 使用@Observed@ObjectLink机制进行深度观测

 在listitem刷新组件时图片闪烁的问题, 使用@Observed@ObjectLink机制进行深度观测, 详细请参考:
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-rendering-control-lazyforeach-V5,
发现被@Observed修饰的类无法被事件传递出去(也可能和类里面多种类型的数据有关), 也就是 emitter.emit 发送了这个类, emitter.on的时候接收到的就没了, 这个怎么处理呢

3 回复

描述了 emitter.emit 发送事件时传递的数据,支持数据类型包括Array、ArrayBuffer、Boolean、DataView、Date、Error、Map、Number、Object、Primitive(除了symbol)、RegExp、Set、String、TypedArray
参考文档:
https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-emitter-V5#emitteremit
https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-emitter-V5#eventdata

emitter规格上不支持带有@修饰的类,所以拿不到返回的data,可以用JSON.parse(JSON.stringify(data))进行一次转化就行了

更多关于HarmonyOS 鸿蒙Next 使用@Observed与@ObjectLink机制进行深度观测的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


传递之前转换为字符串

JSON.stringify(obj) 

接收时在转换为对应的对象.

JSON.parse(str) as ***  

在HarmonyOS鸿蒙Next系统中,@Observed@ObjectLink机制是实现数据深度观测的关键技术,它们旨在提高数据响应式编程的效率与灵活性。

@Observed注解用于标记一个类,使其成为一个可观测对象。当这个对象的属性发生变化时,系统会自动通知相关的观察者,从而触发UI更新或其他逻辑处理。这种机制使得数据绑定和事件处理更加直观和高效。

@ObjectLink注解则用于在组件间建立直接的数据链接。它允许一个组件直接引用另一个组件中的可观测对象,从而实现数据共享和同步。这种链接是双向的,即当源对象的数据发生变化时,目标组件会自动感知并更新显示;反之亦然。

使用这两种机制时,开发者需要确保被观测的对象和链接的数据是正确初始化和配置的。同时,也需要注意避免循环依赖和性能瓶颈。

总之,@Observed@ObjectLink机制为HarmonyOS鸿蒙Next系统提供了强大的数据观测和同步能力,有助于开发者构建响应式、高效且易于维护的应用程序。如果在使用过程中遇到问题,建议仔细检查代码逻辑和配置,确保一切符合规范。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!