目录:
1. EventHub 核心概念
- 发布者(Publisher):触发事件的模块(如登录模块)。
- 订阅者(Subscriber):监听事件的模块(如购物车、个人中心)。
- 事件(Event):携带数据的消息对象,通过唯一eventId标识。
2. 案例场景
- 功能需求: 用户登录成功后,购物车模块和个人中心模块需实时更新UI(如显示用户名、刷新数据)。
- 传统问题: 若直接调用购物车/个人中心的方法,会导致模块间强耦合。
- EventHub解决方案: 登录模块发布“登录成功”事件,其他模块订阅该事件并自主响应。
3. 代码实现步骤
步骤1:定义事件类型
在公共层(Common)中定义事件ID和数据类型:
// common/src/main/ets/event/EventTypes.ets
export const EVENT_USER_LOGIN = 'user_login'; // 事件ID
export interface LoginEventData {
userId: string;
userName: string;
}
步骤2:发布事件(登录模块)
登录成功后,通过EventHub发布事件:
// features/login/src/main/ets/LoginService.ets
import {
EventHub } from '@ohos/baseEvent';
import {
EVENT_USER_LOGIN, LoginEventData } from '@common/event/EventTypes';
function handleLoginSuccess(userId: string, userName: string) {
// 1. 本地处理登录逻辑
// ...
// 2. 发布事件
const eventData: LoginEventData = {
userId, userName };
EventHub.emit(EVENT_USER_LOGIN, eventData); // 关键发布动作
}

最低0.47元/天 解锁文章
737

被折叠的 条评论
为什么被折叠?



