Skip to main content
Version: 2.x

应用间通信

通过window.postMessage

以切换主题这个场景为例

在框架应用发送事件

window.targetWindow.postMessage({
appId: 'godzillaPro',
type: 'switchTheme',
theme: 'dark',
}, '*');

在子应用中响应事件

window.addEventListener(
'message',
event => {
const { appId, type } = event.data;
if (appId) {
if (type === 'switchTheme') {
// 相应主题切换
}
},
false
);

通过msgCenter

msgCenter这种方式仅支持Godzilla 微应用

子应用A发送事件

import { msgCenter } from '@gza/quantex-utils';
msgCenter.publish('something-changed', {a:1}); // 第二个参数可以携带数据的
msgCenter.publish('something-changed', {a:1}, 'godzillaPro'); // 第三个参数可以指定appId

子应用B接收事件

this.token = msgCenter.subscribe('something-changed', (topic, data) => {
console.log(data);
});

// 取消订阅,特别重要,否则可能会造成内存泄露,甚至影响功能
msgCenter.unsubscribe(this.token);