【qiankun】子应用的路由信息传给主应用,主应用使用this.$router.push跳转子应用页面

前提:已经安装qiankun,并且子应用已经接入主应用

场景:主应用是vue2,子应用是vue3

子应用的路由文件router/index.ts

// 在这段后面加下列代码
const router = createRouter({
  history: createWebHistory(
    (window as any).__POWERED_BY_QIANKUN__
      ? "/mainapp/platform"
      : "/platform"
  ),
  routes,
});

// 子应用中触发自定义事件,并传递路由信息
window.dispatchEvent(new CustomEvent('routeChange', 
	{ 
		detail: router.options.routes 
	}
));

主应用的main.js文件中接收

new Vue({
	router,
	store,
	render: h => h(App),
	// 主要是这段代码
	mounted() {
		window.addEventListener('routeChange', (event) => {
			const routeInfo = event.detail;
			console.log(routeInfo.value, 'routeInfo')
		});
	}
}).$mount('#app')

主应用使用this.$router.push跳转子应用页面,在任何一个你需要跳转的vue页面里面使用就行

this.$router.push("子应用路径")
this.$router.push({path: "子应用路径", query: {传参}})

但是有个很抓狂的事情,name跳转死都不给跳,一直报警告说name不存在,但是我确定name一定存在,但是我要传参,并且这个参数不能显示在地址栏,所以只能放弃router.push

const state = { id: item.info.id };
const url = '/paasportal/api-service-platform/home/apiDetail';
window.history.pushState(state, '', url);
window.location.href = url;

子应用接收window.history.pushState的传值

const state = window.history.state;
const id = state ? state.id : null;
console.log(id, '==============')
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你在 qiankun跳转应用时遇到了 404 错误,通常是由于应用路由配置问题导致的。你可以尝试以下几个步骤来解决问题: 1. 确认应用可以单独运行 在跳转应用之前,你需要先确认应用可以单独运行,并且其路由功能正常。你可以在本地启动应用并进行测试,确保其路由功能可以正常工作。 2. 配置 qiankun路由模式 在 qiankun 中,你需要配置路由模式为 `history` 模式或 `hash` 模式。如果你的应用使用了 `history` 模式,你需要在 qiankun 中也配置为 `history` 模式;如果应用使用了 `hash` 模式,你需要在 qiankun 中也配置为 `hash` 模式。 你可以在应用的 `registerMicroApps` 方法中添加 `activeRule` 属性来配置路由模式,例如: ```javascript registerMicroApps([ { name: 'sub-app', entry: '//localhost:8080', container: '#subapp-container', activeRule: '/sub-app', props: { someProp: 'some value' } } ], { // 配置 qiankun路由模式 // 如果应用使用了 history 模式,这里也要配置为 history 模式 // 如果应用使用了 hash 模式,这里也要配置为 hash 模式 // 默认为 hash 模式 router: { mode: 'history' } }); ``` 3. 配置应用路由应用中,你需要配置正确的路由规则,确保与 qiankun路由模式相匹配。例如,如果你在 qiankun使用了 `history` 模式,那么应用路由规则也需要使用 `history` 模式。 你可以在应用路由配置文件中添加 `base` 属性来指定应用的根路由,例如: ```javascript import Vue from 'vue'; import Router from 'vue-router'; import Home from './views/Home.vue'; Vue.use(Router); export default new Router({ mode: 'history', base: '/sub-app', routes: [ { path: '/', name: 'home', component: Home }, // ... ] }); ``` 其中,`base` 属性指定了应用的根路由,这里为 `/sub-app`。注意,这个值要与 qiankun 中配置的 `activeRule` 属性相匹配。 希望以上解决方案可以帮助你解决问题。如果问题仍然存在,请尝试检查应用路由配置是否正确,或者提供更多的信息以便我们更好地帮助你解决问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值