qiankun父应用与子应用之间通信

qiankun父应用与子应用之间通信

主应用

在src目录下新增qiankunActions.js
vue3的useStore只能在setup中使用,所以这里如果要存储在store中,可以使用@/store

import{ initGlobalState, MicroAppStateActions }from'qiankun'
import _store from '@/store'
const initialState = {
 //这可以写初始化数据
 backUrl: '/'
}
// 初始化
const actions = initGlobalState(initialState)

actions.onGlobalStateChange((state, prevState)=>{
	_store.commit("setData", state) // 在store存储相关数据
})
export default actions

在入口文件main.js中引入qiankunActions.js

import actions from './qiankunActions.js'
import { registerMicroApps,runAfterFirstMounted,addGlobalUncaughtErrorHandler, start } from 'qiankun';
registerMicroApps( [{
     name: 'uums',
     entry: 'http://localhost:8081/',
     container: '#container', // 微应用挂载节点 - 微应用加载完成后将挂载在该节点上
     activeRule:'uums',
  props: {
	actions,
	message: '主应用'
  }
})

子应用

在src目录下新增qiankunActions.js

function emptyAction() {
	console.warn("Current execute action is empty!");
}
class Actions {
	actions = {
		onGlobalStateChange: emptyAction,
		setGlobalState: emptyAction
	}
	constructor() {}
	setActions(actions) {
		this.actions = actions
	}
	onGlobalStateChange(...args) {
		return this.actions.onGlobalStateChange(...args)
	}
	setGlobalState(...args) {
		return this.actions.setGlobalState(...args)
	}
}
const actions = new Actions()
export default actions

在main.js中引入qiankunActions.js

import actions  from './qiankunActions.js'
// 在render()方法中加入以下代码
if (props.container) {
	actions.setActions(props)
}

通过以下方法获取传递过来的参数

actions.onGlobalStateChange((state)=>{
	console.log(state)
},true)

返回主应用页面地址

// 无跳转重写url
//window.history.pushState(data, title, targetURL);
//@状态对象:传给目标路由的信息,可为空
//@页面标题:目前所有浏览器都不支持,填空字符串即可
//@可选url:目标url,不会检查url是否存在,且不能跨域。如不传该项,即给当前url添加data
window.history.pushState({
	user: {} // JSON.stringify()字符串
}, '', '/')

注意:这里会有请求的问题,子应用的请求会使用主应用的链接头部,在开发环境下需要在主应用的devServer中配置子应用的转发地址

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值