记一次微前端(qiankun)路由query踩坑

341 阅读1分钟

问题描述

项目用的是vue3作为基座应用,vue2作为子应用。主要的涉及的功能是用户权限下发到子应用中,实现权限菜单。

遇到的主要问题是在子应用的生命周期mounted中不是直接render子应用,而是要等权限下发完成后才能render,也就是要在应用通信结束后才能进行render步骤。

代码大致长这样

image.png

这时候对于带query的子应用路由,在刷新页面后,query就丢失了。

经过排查发现,在初始化Router(history模式)时,需要用到window.location对象,在mounted中,改对象是正确的。但是在onGlobalStateChange的回调中,该对象已经被修改了。

image.png

这就导致了query的丢失。

解决方案

保留完整路径,在通信结束后手动激活导航。

image.png