micro-app
micro-app copied to clipboard
子应用点击浏览器返回按钮后直接卸载应用
问题描述
子应用点击浏览器返回按钮后直接卸载应用
复现步骤
1.主应用通过oauth2登录后重定向到子应用 2.子应用点击浏览器返回按钮会直接卸载当前子应用
上传截图
window.location.href =
域名/api/auth/oauth/authorize?response_type=code&redirect_uri=${import.meta.env.VITE_APP_CHILD_LOGIN_REDIRECT}/child/${item.appMark}/redirect&scope=client&state=&client_id=${item.appId}
;
点击返回后会直接走window.unmount
环境信息
- micro-app版本:1.0.0-rc.5
- 主应用前端框架&版本:vue3 vite [email protected]
- 子应用前端框架&版本:vue3 vite [email protected]
- 构建工具&版本:[email protected]
就这种重定向的情况,有没有什么好的解决办法
浏览器返回是全局的,不分主应用或子应用。应该是返回时micro-app元素被删除导致子应用卸载
我看了一下,确实走了window.unmount应用卸载,但是micro-app元素还是存在的
应该在返回后micro-app元素被卸载后又重新渲染,导致这种情况有很多,比如主应用中设置了:key或者其它情况。
确实是会重新渲染,但是我的需求是需要卸载应用时清空子应用自己的token,所以我把清除token写在了window.unmount,这就导致无法正常使用。在主应用中我没有给micro-app元素设置key。
我尝试过按照官方给出的方法router.push("/child/messagecenter/index")跳转到子应用的某个页面,这种方式下就是正常的,不存在点击返回卸载应用。但我通过重定向到子应用就会出现卸载应用的情况。
那应该是重定向的问题,这种情况微前端解决不了,只能根据项目自行适配了
好的,谢谢。我试试看能不能重定向到主应用,再通过router.push跳转。