事件监听
Global IM UIKit 对外提供了事件监听能力,同时允许开发者拦截并修改部分事件的处理逻辑,以覆盖默认行为,实现业务的定制化需求。
所有的对外事件类型定义,可通过 Global IM UIKit 对外常量 RCKitEvents
获取。
import { RCKitEvents } from '@rongcloud/global-im-uikit';
添加事件监听
代码示例
// 以 RCKitEvents.ALERT_EVENT 事件举例
kitApp.addEventListener(RCKitEvents.ALERT_EVENT, (evt) => {
// evt 为 RCKitEvent 对象,包含事件的类型、数据等信息
const { data } = evt;
console.log('收到警告提示信息:', data);
});
参数
名称 | 类型 | 是否必需 | 说明 |
---|---|---|---|
eventType | String | 是 | 事件类型,可通过 RCKitEvents 常量获取 |
listener | Function | 是 | 事件监听器,接收一个 RCKitEvent 对象作为参数 |
thisObj | Object | 否 | 事件监听器 this 指向 |
RCKitEvent 对象
所有事件监听器的回调函数,均接收一个 RCKitEvent
类或其子类对象作为参数,该对象包含了事件的类型、数据等信息。
preventDefault
RCKitEvent
示例中提供 preventDefault
方法,用以阻断 Global IM UIKit 默认行为的方法。
以 RCKitEvents.ALERT_EVENT
事件为例,当 Global IM UIKit 派发此事件时,您可以通过 RCKitEvent
对象获取到警告提示信息,并通过 preventDefault
方法阻断 Global IM UIKit 默认 UI 警告提示行为,转为使用业务层自定义的警告弹窗 UI 提示组件进行展示。
const listener = (evt) => {
const { data } = evt;
// 阻断 SDK 默认行为,SDK 内部将不再弹窗告警
evt.preventDefault();
// 使用业务层自定义的警告弹窗 UI 提示组件进行展示,以使整体业务 UI 风格统一
alert(data);
};
kitApp.addEventListener(RCKitEvents.ALERT_EVENT, listener);
sendResult
部分事件需要将结果返回给 Global IM UIKit,以便于 Global IM UIKit 内部进行后续处理,此时,您可以通过 RCKitEvent
对象的 sendResult
方法,将结果返回。
以 RCKitEvents.CONFIRM_EVENT
事件为例,该事件在会在 Global IM UIKit 中弹出内置确认弹窗供用户进行操作,并接收一个布尔值作为用户的选择结果。
您可以通过拦截该事件从而实现自定义弹窗 UI 组件,并通过 sendResult
方法将用户的确认结果返回给 Global IM UIKit,以便于 Global IM UIKit 内部进行后续处理。
const listener = (evt) => {
const { data } = evt;
// 阻断 SDK 默认行为,避免 SDK 使用内置 UI 弹窗
evt.preventDefault();
// 使用业务层自定义的确认弹窗 UI 提示组件进行展示,以使整体业务 UI 风格统一
confirm(data, (result) => {
// 将用户的确认结果返回给 SDK
evt.sendResult(result);
});
};
kitApp.addEventListener(RCKitEvents.CONFIRM_EVENT, listener);
sendResult
仅接受第一次调用时传入的参数作为处理结果,后续调用将被忽略。
移除事件监听
示例
kitApp.removeEventListener(RCKitEvents.ALERT_EVENT, listener);
参数说明
名称 | 类型 | 是否必需 | 说明 |
---|---|---|---|
eventType | String | 是 | 事件类型,可通过 RCKitEvents 常量获取 |
listener | Function | 是 | 事件监听器,接收一个 RCKitEvent 对象作为参数 |
thisObj | Object | 否 | 事件监听器 this 指向 |