qiankun的官方文档并没有提供子应用间通信的功能。
而在实际的应用中,父应用同时渲染两个以上子应用并且子应用之间存在通信的场景也不常见。
我看了一些qiankun的文档,总结了一种子应用间的通信方式,以订阅/发布的模式实现,在本文中记录下来。
在父应用中新增订阅发布文件
// src/utils/event.js
const event= { clientList: {}, on (type, fn) {//将订阅者fn跟发布的消息类型type绑定 if (!this.clientList[type]) { this.clientList[type] = [] } this.clientList[type].push(fn) }, trigger (type, ...params) { // 触发订阅者动作 let fns = this.clientList[type] if (!fns || fns.length === 0) { return false } fns.forEach(fn => { fn.apply(this, [...params]) }) }, remove(type,fn){ // 移除事件 if(!this.clientList[type]){ return new Error('无效的事件') } if(!fn){ delete this.clientList[type].fn }else{ co |