事件总线是一种用于组件间通信的模式,它允许组件发布和订阅事件,而不需要知道彼此的存在。 // 事件总线服务 class EventBus { private listeners: Map<string, Function[]> = new Map(); on(event: string, listener: Function) { if (!this.listeners.has(event)) { this.listeners.set(event, []); } this.listeners.get(event)!.push(listener); } off(event: string, listener: Function) { const listeners = this.listeners.get(event); if (listeners) { const index = listeners.indexOf(listener); if (index > -1) { listeners.splice(index, 1); } } } emit(event: string, data: any) { const listeners = this.listeners.get(event); if (listeners) { listeners.forEach((listener) => listener(data)); } } } // 使用事件总线 const eventBus = new EventBus(); @Entry @Component struct Index { build() { Column() { Button('Publish Event') .onClick(() => { eventBus.emit('greet', { name: 'World' }); }) .width('100%') .height(100) // 订阅事件 eventBus.on('greet', (data) => { console.log(`Greet event received: ${data.name}`); }); } .width('100%') .height('100%') } }EventBus类提供了事件发布和订阅的功能。Index组件在点击按钮时发布一个事件,而另一个部分的代码订阅了这个事件,并在事件被触发时执行相应的逻辑。参见:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides...本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。
事件总线是一种用于组件间通信的模式,它允许组件发布和订阅事件,而不需要知道彼此的存在。
EventBus类提供了事件发布和订阅的功能。Index组件在点击按钮时发布一个事件,而另一个部分的代码订阅了这个事件,并在事件被触发时执行相应的逻辑。
参见:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides...
本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。