vue3微前端qiankun子应用作为主应用对接wujie子应用 iframe报错null:子应用加载被主应用中断

vue3微前端qiankun子应用作为主应用对接wujie子应用

iframe报错null:子应用加载被主应用中断

wujie-vue3版本

解决方案:

1.wujie降级处理degrade设为true

2.attrs设置属性src地址url,url为wujie主应用空白页地址

示例代码:

<WujieVue
width="100%"
height="100%"
:sync="false"
:degrade="true"
:attrs="{src:'https://aaa/#/aa'}"
name="form"
:props="{ data: propsData }"
:url="mtUrl"
/>

注意:使用attrs时,degrade需要设为true

https://aaa/#/aa为wujie主应用空白页地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 Qiankun 开发子应用时,如果子应使用的是 hash 模式路由,需要在子应用的入口文件中,手动初始化路由。 在 Vue子应用中,可以在 `main.js` 文件中进行路由初始化,具体实现如下: ``` import Vue from 'vue' import App from './App.vue' import router from './router' Vue.config.productionTip = false // 手动初始化路由 let instance = null function render(props = {}) { const { container } = props instance = new Vue({ router, render: h => h(App) }).$mount(container ? container.querySelector('#app') : '#app') } // 如果不是作为子应使用,则直接渲染应用 if (!window.__POWERED_BY_QIANKUN__) { render() } // 导出生命周期钩函数 export async function bootstrap() {} export async function mount(props) { // 初始化路由 render(props) } export async function unmount() { // 销毁实例 instance.$destroy() instance = null } ``` 在这里,我们通过 `render` 函数手动初始化了路由,并在 `mount` 钩中再次调用 `render` 函数,以保证子应用在挂载时能够正确初始化路由。 另外,需要注意的是,在切换子应用时,主应用会将当前的路由信息传递给子应用,因此,子应用需要在接收到这些信息后自行进行路由跳转。你可以通过监听 `qiankun` 的 `routeChange` 事件来实现这个功能,具体实现如下: ``` import Vue from 'vue' import App from './App.vue' import router from './router' Vue.config.productionTip = false // 手动初始化路由 let instance = null function render(props = {}) { const { container } = props instance = new Vue({ router, render: h => h(App) }).$mount(container ? container.querySelector('#app') : '#app') } // 如果不是作为子应使用,则直接渲染应用 if (!window.__POWERED_BY_QIANKUN__) { render() } // 导出生命周期钩函数 export async function bootstrap() {} export async function mount(props) { // 初始化路由 render(props) // 监听 routeChange 事件 props.onGlobalStateChange((state, prev) => { if (state.type === 'vue2_subapp_route_change') { const { path } = state.payload router.push(path) } }) } export async function unmount() { // 销毁实例 instance.$destroy() instance = null } ``` 在这里,我们通过 `props.onGlobalStateChange` 监听 `routeChange` 事件,并在事件回调函数中跳转路由。当主应用切换路由时,会触发这个事件,从而实现路由跳转。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值