HarmonyOS 事件触发相关

现在有个发送消息场景:

父组件(创建与发送消息逻辑) --> A子组件 --> B子组件 --> B-1子组 --> C子组件

在A组件 B组件 C组件以及子组件的子组件B-1子组件中, 都需要触发到发送不同类型值去进行消息创建与发送消息逻辑,这个时候能选择的实现方式

①有接口一级一级回调②使用Emitter等。

通过接口传入感觉就很冗余,所以想问一下,能使用Emitter来通知父组件进行统一的消息处理和发送吗?

会不会有什么性能问题呢?有没有更加推荐的实现方式呢?

HarmonyOS 事件触发相关 -鸿蒙开发者社区

HarmonyOS
6h前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
FengTianYa

emitter没有限制事件队列,本身的消息处理能力与应用有关,当前场景应该不会出现性能问题。可以把接口传入的方法封装成工具类等进行调用。

LocalStorage可以实现页面级的UI状态存储,您看看是否能满足您的需求,参考文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-localstorage-V5#%E6%A6%82%E8%BF%B0

可以看下eventHub能否满足需求,一般用于同一线程内。不同线程可以使用emitter,参考:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-inner-application-eventhub-V5#%E5%AF%BC%E5%85%A5%E6%A8%A1%E5%9D%97

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-emitter-V5#emitteremit

1、eventHub使用上性能较优,可以替代provide/consume

2、实现对应需求,修改demo,具体为:page1到page2的方式改为router.replaceUrl,eventHub事件回调修改为箭头函数,例如:

eventFunc: (good: Good) => void = (good: Good) => { good.run() } 

另外,eventHub取消订阅时,需要指定具体回调,否则会取消该事件所有的事件订阅,参考:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-inner-application-eventhub-V5#eventhuboff

分享
微博
QQ
微信
回复
4h前
相关问题
HarmonyOS ImageSpan点击事件无法触发
469浏览 • 1回复 待解决
长按事件如何重复触发
2100浏览 • 1回复 待解决
HarmonyOS Video组件的错误事件相关
611浏览 • 1回复 待解决
js开发wearable onswipe事件无法触发
7794浏览 • 1回复 已解决
焦点事件onBlur/onFocus回调无法触发
2034浏览 • 1回复 待解决
Stack组件中如何触发下层事件的控件
285浏览 • 1回复 待解决