micro-app icon indicating copy to clipboard operation
micro-app copied to clipboard

子应用点击浏览器返回按钮后直接卸载应用

Open hjn1028 opened this issue 9 months ago • 7 comments

问题描述

子应用点击浏览器返回按钮后直接卸载应用

复现步骤

1.主应用通过oauth2登录后重定向到子应用 2.子应用点击浏览器返回按钮会直接卸载当前子应用

上传截图

image 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};

image 点击返回后会直接走window.unmount

环境信息

hjn1028 avatar May 06 '24 02:05 hjn1028

就这种重定向的情况,有没有什么好的解决办法

hjn1028 avatar May 06 '24 05:05 hjn1028

浏览器返回是全局的,不分主应用或子应用。应该是返回时micro-app元素被删除导致子应用卸载

bailicangdu avatar May 06 '24 06:05 bailicangdu

image 我看了一下,确实走了window.unmount应用卸载,但是micro-app元素还是存在的

hjn1028 avatar May 06 '24 06:05 hjn1028

应该在返回后micro-app元素被卸载后又重新渲染,导致这种情况有很多,比如主应用中设置了:key或者其它情况。

bailicangdu avatar May 06 '24 08:05 bailicangdu

确实是会重新渲染,但是我的需求是需要卸载应用时清空子应用自己的token,所以我把清除token写在了window.unmount,这就导致无法正常使用。在主应用中我没有给micro-app元素设置key。 image 我尝试过按照官方给出的方法router.push("/child/messagecenter/index")跳转到子应用的某个页面,这种方式下就是正常的,不存在点击返回卸载应用。但我通过重定向到子应用就会出现卸载应用的情况。

hjn1028 avatar May 06 '24 08:05 hjn1028

那应该是重定向的问题,这种情况微前端解决不了,只能根据项目自行适配了

bailicangdu avatar May 06 '24 09:05 bailicangdu

好的,谢谢。我试试看能不能重定向到主应用,再通过router.push跳转。

hjn1028 avatar May 06 '24 10:05 hjn1028