微前端micro-app刷新重载页面问题

一、场景

pc端项目,通过微前端嵌入页面

<micro-app name='xx' url='xx'></micro-app>

二、问题

点击侧边栏打开新页面,顶部tab选项卡切换a、b页面缓存页面不刷新,保持用户操作,关闭选项卡后从侧边栏菜单打开新页面需要重置页面。

因为子应用(嵌入的页面)中内嵌了一个iframe,每次都会重新加载,所以在tab选项卡切换页面时无法保持不刷新

三、解决

在主应用中用v-show来控制子应用

<micro v-show="$route.fullPath === '子应用'"></micro>
<router-view :key="$route.fullPath" v-if="$route.fullPath !== '子应用'"></router-view>

这样暂时是能实现tab选项卡切换时,不刷新页面,但是选项卡关闭之后再打开,此时相当于这个子应用的隐藏切换到显示,页面没有重新加载,不满足交互要求

因此增加了侧边栏打开页面重载子应用

microApp.forceSetData('my-app', { action: "reload" })

forceSetData方法拥有和setData一样的参数和行为,唯一不同的是forceSetData会强制发送数据,无论数据是否变化

通过强制发送重载子应用,子应用是会重新加载了,但是重载后的页面一直在刷新,一直请求接口

排查问题应该是主应用给子应用传递数据的方法setData导致

改为直接return出数据

很不幸的是,此时页面直接加载不出来了,暂时不知道为什么采用return的方法不行

最终解决办法,在主应用请求接口前先做一下清空数据

microApp.clearData('my-app')

使用配置项的方法也不行,还是一直在重新加载,只能手动清空

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值