汇泽网站建设长沙建立网站
2026/1/22 10:06:16 网站建设 项目流程
汇泽网站建设,长沙建立网站,给网站做游戏视频怎么赚钱,惠州市建筑信息平台轻量级的本地事件发布/订阅#xff08;Pub/Sub#xff09;机制#xff0c;用于 同一个 Ability 内不同页面或组件之间的通信#xff0c;实现 解耦的组件间通信 eventHub 是 Ability 内部私有 的#xff0c;不能跨 Ability 通信#xff08;如从一个 EntryAbility 发消息到…轻量级的本地事件发布/订阅Pub/Sub机制用于同一个 Ability 内不同页面或组件之间的通信实现解耦的组件间通信eventHub是Ability 内部私有的不能跨 Ability 通信如从一个 EntryAbility 发消息到另一个 ServiceAbility。使用1在 Ability 中获取 eventHub你的代码// EntryAbility.ts export default class EntryAbility extends UIAbility { onCreate() { // 获取 eventHub通常保存为成员变量 this.eventHub this.context.eventHub; } }this.context.eventHub只能在UIAbility的生命周期方法中访问如onCreate,onWindowStageCreate。2在页面中使用需通过 AppStorage 或其他方式传递由于 ArkTS 页面组件Component无法直接访问Ability的context通常需要将eventHub存入全局状态在 Ability 中存入 AppStorage// EntryAbility.ts import { AppStorage } from kit.ArkUI; export default class EntryAbility extends UIAbility { onWindowStageCreate(windowStage: window.WindowStage) { // 将 eventHub 存入全局注意仅存引用不序列化 AppStorage.setOrCreate(eventHub, this.context.eventHub); windowStage.loadContent(pages/Index); } }在页面中使用// Index.ets import { AppStorage } from kit.ArkUI; Entry Component struct Index { build() { Column() { Button(发送事件) .onClick(() { const hub AppStorage.getEventHub(eventHub); // 发布事件 hub.emit(userLogin, { userId: 123, name: Alice }); }) } } }在另一个页面监听// Profile.ets Entry Component struct Profile { aboutToAppear() { const hub AppStorage.getEventHub(eventHub); // 订阅事件 hub.on(userLogin, (data) { console.log(收到登录事件:, data); // 更新 UI }); } aboutToDisappear() { // 务必取消订阅避免内存泄漏 const hub AppStorage.getEventHub(eventHub); hub.off(userLogin); } }方法说明emit(event: string, ...args: any[])发布事件可传参数on(event: string, callback: Function)订阅事件off(event: string, callback?: Function)取消订阅建议在aboutToDisappear中调用once(event: string, callback: Function)订阅一次触发后自动取消3注意事项1.不能跨 Ability 使用eventHub仅限同一个 UIAbility 内部通信。跨 Ability 请使用Want / AbilityStage / 全局状态管理如 AppStorage 状态变量。2.必须手动取消订阅否则会导致内存泄漏回调函数持有页面引用阻止 GC。推荐在aboutToDisappear()中调用off()。3.不适合复杂状态管理对于全局状态如用户信息、主题建议使用StorageLinkAppStorage自定义状态管理库如类似 Redux 的方案4替代方案对比方案适用场景优点缺点eventHub同 Ability 内简单通知轻量、官方支持不能跨 Ability需手动管理订阅AppStorageStorageLink全局状态共享响应式更新自动同步仅支持简单数据类型自定义 Callback父子组件通信简单直接需 props 逐层传递UIContext封装统一事件管理可扩展非官方增加复杂度

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询