1. 在主应用中定义统一路由规则:
// 主应用 router.js
import { registerMicroApps, start } from 'qiankun';const routes = [{path: '/app1/*',name: 'app1',container: '#subapp-container',entry: '//localhost:7101',},{path: '/app2/*',name: 'app2',container: '#subapp-container',entry: '//localhost:7102',}
];registerMicroApps(routes);
start();
2. 在子应用中使用主应用提供的跳转方法:
function navigateToApp2() {// 使用window.__POWERED_BY_QIANKUN__判断环境if (window.__POWERED_BY_QIANKUN__) {window.history.pushState(null, null, '/app2/target-page');} else {// 独立运行时的处理}
}
上面的方式页面可以实现跳转,但是跳转后页面未渲染,呈现空白页,解决方式:
使用umi的createBrowserHistory并设置强制刷新。
import { createBrowserHistory } from 'umi';
const historys = createBrowserHistory({basename: '', //基链接forceRefresh: true, //是否强制刷新
});// 点击事件中调用:
historys.push('/app2/target-page');