当前位置: 首页 > news >正文

【微服务】前端微服务qiankun 2.x主子应用通信代码片段

主应用代码

主应用工程里面源代码新建qiankun/index.js,通信代码如下:

import { initGlobalState } from "qiankun";
import store from '@/store'// 主应用与微应用数据通信
const state = {subappClassName: '' // 设置子应用打包根的class类名
}
const actions = initGlobalState(state);actions.setGlobalState(state);actions.onGlobalStateChange((state, prev) => {const { subappClassName } = state;store.dispatch('setSubappClassName',subappClassName);})
export {actions
};

在主应用实例里面调用方式:

<script>
import actions from '@/qiankun'// 导入actions实例
export default {created() {actions.setGlobalState({subappClassName: 'subapp'}); // 通过setGlobalState改变全局状态}
}
</script>

子应用代码

在子应用源代码utils/qiankun.js添加如下代码:

class Actions {static empty() {console.warn('current actions is empty!')}actions = {onGlobalStateChange: Actions.empty,setGlobalState: Actions.empty}/** 初始化设置actions**/setActions(actions) {this.actions = actions;}onGlobalStateChange(...args) {return this.actions.onGlobalStateChange(...args);}setGlobalState(...args) {return this.actions.setGlobalState(...args);}
}export default new Actions();

在main.js入口文件引入actions实例,并在mount生命周期中导入该实例,代码如下:

import actions from '@/utils/qiankun';
export async function mount(props) {actions.setActions(props);actions.setGlobalState({ subappClassName: 'sub-root-app' }); // 可在mount中设置,也可在实例里设置render(props);
}

在vue路由页面调用:

<script>
import actions from '@/utils/qiankun.js';
export default {created() {actions.setGlobalState({subappClassName: 'sub-root-app'});}
}
</script>

http://www.mrgr.cn/news/40067.html

相关文章:

  • SystemC学习(一)——环境安装
  • 软件设计师——计算机网络
  • 两个示例分析系统优化的选择
  • 【微信小程序前端开发】入门Day01 —— 小程序页面组成、组件使用及协同开发发布指南
  • 解决$‘r‘ command not found或者文件夹显示’tvsf 33‘$‘r‘
  • USB 3.1 标准 A 型插头到 USB 3.1 Micro-B 型插头电缆组件的电线连接
  • 裸金属服务器与虚拟机、物理机区别
  • 2024年9月30日随笔
  • mobile_aloha训练过程中pycharm编辑器遇到的问题记录
  • 【编程小白必看】MySQL 聚合函数操作秘籍一文全掌握
  • 非常全面的中考总复习资料-快速提升中考成绩!
  • 【刷点笔试面试题试试水】#ifndef和#ifdef有什么区别?
  • 单臂路由详解
  • PCL库简单NDT算法配准
  • 大数据复习知识点5
  • C语言导航 2.1基本字符集与词汇
  • Java入门3——操作符+String
  • 【设计模式-模板】
  • 【漏洞复现】金和OA C6 GeneralXmlhttpPage.aspx Sql注入漏洞
  • Chromium 屏蔽“缺少 Google API 密钥,因此 Chromium 的部分功能将无法使用。”提示 c++