主应用给子应用传值是在注册的时候通过 props 进行传递
例如以下是我注册时候主应用的代码:
import { registerMicroApps, start } from 'qiankun';
import test from './components/test.vue'
// 注册
registerMicroApps([
{
name: 'vueApp',
entry: '//localhost:7500',
container: '#container',
activeRule: '/vue2',
props: {
test: test,
},
},
]);
// 开启
start();
我想把 test 组件传递给子应用使用,这里写的是可以的,但是需要注意:
主应用和子应用尽量使用相同的框架,不然可能会有兼容问题,我之前就是主应用使用的是vue3,但是子应用使用的是 vue2,结果在子应用中使用就出现了问题
不过其实也还有另外一种方案
另一种方案:共享 npm 包
如果公用组件较为复杂且多个子应用都需要使用,可以考虑将其独立为一个 npm 包。这样,主应用和子应用都可以单独安装该包,而无需通过 props
传递。