Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
hu819057918 opened this issue May 6, 2024 · 7 comments
Open

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

hu819057918 opened this issue May 6, 2024 · 7 comments
Labels

Comments

@hu819057918
Copy link

问题描述

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

复现步骤

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

环境信息

  • micro-app版本:1.0.0-rc.5
  • 主应用前端框架&版本:vue3 vite vue-router@4.3
  • 子应用前端框架&版本:vue3 vite vue-router@4.3
  • 构建工具&版本:vite@5.1.5
@hu819057918
Copy link
Author

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

@bailicangdu
Copy link
Member

bailicangdu commented May 6, 2024

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

@hu819057918
Copy link
Author

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

@bailicangdu
Copy link
Member

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

@hu819057918
Copy link
Author

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

@bailicangdu
Copy link
Member

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

@hu819057918
Copy link
Author

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants