现在有个发送消息场景:
父组件(创建与发送消息逻辑) --\> A子组件 --\> B子组件 --\> B-1子组 --\> C子组件
在A组件 B组件 C组件以及子组件的子组件B-1子组件中, 都需要触发到发送不同类型值去进行消息创建与发送消息逻辑,这个时候能选择的实现方式
①有接口一级一级回调②使用Emitter等。
通过接口传入感觉就很冗余,所以想问一下,能使用Emitter来通知父组件进行统一的消息处理和发送吗?
会不会有什么性能问题呢?有没有更加推荐的实现方式呢?
现在有个发送消息场景:
父组件(创建与发送消息逻辑) --\> A子组件 --\> B子组件 --\> B-1子组 --\> C子组件
在A组件 B组件 C组件以及子组件的子组件B-1子组件中, 都需要触发到发送不同类型值去进行消息创建与发送消息逻辑,这个时候能选择的实现方式
①有接口一级一级回调②使用Emitter等。
通过接口传入感觉就很冗余,所以想问一下,能使用Emitter来通知父组件进行统一的消息处理和发送吗?
会不会有什么性能问题呢?有没有更加推荐的实现方式呢?
1 回答561 阅读✓ 已解决
1.3k 阅读
531 阅读
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事件回调修改为箭头函数,例如:
另外,eventHub取消订阅时,需要指定具体回调,否则会取消该事件所有的事件订阅,参考:
https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-inner-application-eventhub-V5\#eventhuboff