事件监听
添加监听器
可以通过 addEventListener 方法,监听 IMLib 内部触发的各类事件通知。同一事件类型可以绑定多个监听函数,且它们都会被依次执行。
如果只希望监听某个事件一次,可以使用 onceEventListener。
JavaScript
// 消息监听
const Events = RongIMLib.Events;
RongIMLib.addEventListener(Events.MESSAGES, (evt) => {
console.log(evt.messages);
})
常见问题:监听中收到重复的数据
通常是由于业务层重复注册了相同监听器导致的。常见场景如在子组件的生命周期中注册监听,每次组件创建都会触发一次注册,最终导致收到重复数据。
推荐做法:
- 全局注册:建议在应用入口或统一管理位置注册监听器,确保只注册一次。
- 组件内注册需同步销毁:如确需在组件内监听,务必在组件销毁时移除监听器,防止内存泄露和重复回调。
移除监听
为了避免内存泄露,建议在不需要监听时,及时使用 removeEventListener 或 removeEventListeners 移除事件监听器。
removeEventListener:移除某个事件对应的指定监听函数。removeEventListeners:移除某个事件上所有的监听函数。
JavaScript
const Events = RongIMLib.Events
const listener = (evt) => console.log(evt.messages)
// 添加具体事件监听器
RongIMLib.addEventListener(Events.MESSAGES, listener)
// 移除具体事件监听器
RongIMLib.removeEventListener(Events.MESSAGES, listener)
// 移除具体事件的所有监听器
RongIMLib.removeEventListeners(Events.MESSAGES)