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

[BUG]- 手动卸载子应用再挂载回去会失败 #1734

Closed
wen-haoming opened this issue Sep 17, 2021 · 16 comments
Closed

[BUG]- 手动卸载子应用再挂载回去会失败 #1734

wen-haoming opened this issue Sep 17, 2021 · 16 comments

Comments

@wen-haoming
Copy link

wen-haoming commented Sep 17, 2021

package 版本

"qiankun": "2.5.0"

复现步骤

使用的是手动挂载 loadMicroApp
子应用挂载顺序是 应用1,应用2,应用3,应用4 ,然后我卸载的是 应用3,再选择挂载 应用3,就会出现以下报错然后应用挂载失败,页面空白

image

但实际上这个报错与 single-spa 无关,经过一番研究,我发现需要卸载应用必须是遵从 应用4 -> 应用3 -> 应用2 -> 应用1 才好使。。

所以,翻看源码发现这是上个月提交过的一个 pr 修复了一个问题导致,caf22cc

https://github.com/umijs/qiankun/blob/master/src/apis.ts#L101-L112

期望

希望有另一种更好的方式去解决子应用卸载的问题

@wen-haoming
Copy link
Author

wen-haoming commented Sep 17, 2021

目前的解决方案: 锁定至 v2.4.5 版本

@wen-haoming wen-haoming changed the title unmount 子应用会失败 [BUG]- unmount 子应用会失败 Sep 18, 2021
@wen-haoming wen-haoming changed the title [BUG]- unmount 子应用会失败 [BUG]- 动态卸载子应用再挂载回去会失败 Sep 18, 2021
@wen-haoming wen-haoming changed the title [BUG]- 动态卸载子应用再挂载回去会失败 [BUG]- 手动卸载子应用再挂载回去会失败 Sep 18, 2021
@github-actions
Copy link

Hello @wen-haoming. In order to facilitate location and troubleshooting, we need you to provide a realistic example. Please forking these link codesandbox or clone qiankun examples to your GitHub repository.

你好 @wen-haoming, 为了方便定位和排查问题,我们需要你提供一个重现实例,请提供一个尽可能精简的链接 codesandbox 或直接 clone qiankun examples,并上传到你的 GitHub 仓库。

@raoyingjun
Copy link

我也遇到了类似的问题再2.5.0,“single-spa minified message #31: See https://single-spa.js.org/error/?code=31&arg=mount&arg=parcel&arg=routePlugin_1634717463365_478&arg=3000”

@raoyingjun
Copy link

已解决,手动调用unmount即可。

const microApp = loadMicroApp() // 加载你的微应用程序
microApp.unmount() // 在不需要的时机手动卸载该应用,后面即可再次正常加载微应用程序了

@wen-haoming

@tpc-ht
Copy link

tpc-ht commented Sep 1, 2022

已解决,手动调用unmount即可。

const microApp = loadMicroApp() // 加载你的微应用程序
microApp.unmount() // 在不需要的时机手动卸载该应用,后面即可再次正常加载微应用程序了

@wen-haoming

大佬你好!我这边主应用是 umi+react,子应用用的vue,目前使用'react-activation 做了页面缓存,打开、切换都没问题。但是关闭页面(实际触发了子应用的 unmount 函数),在挂载就出现 #31 出现白板

@jiangdexiao
Copy link

自从2.4.4之后的版本就存在这个问题,到现在 都 2.10.3了 依然还存在这个问题

@ssslc
Copy link

ssslc commented Jul 5, 2023

已解决,手动调用unmount即可。

const microApp = loadMicroApp() // 加载你的微应用程序
microApp.unmount() // 在不需要的时机手动卸载该应用,后面即可再次正常加载微应用程序了

@wen-haoming

请问不是手动加载的出现这个问题,怎么解决呢

@Echonessy
Copy link

解决了吗?我也遇到了,针对多Tab页面

@amy0133
Copy link

amy0133 commented Aug 19, 2024

这个问题,我现在使用的是最新的@umijs/max([email protected])依然遇到。有什么解决方案吗。我是多tab的页面,出现一次之后关闭这个tab重新打开就不会出现了。

@luo0412
Copy link

luo0412 commented Aug 19, 2024 via email

@wizardpisces
Copy link

依然遇到,在 [email protected], react router 切换出去再切换回来;同时 loadMicroApp ,后 unmount,回来再 loadMicroApp 就显示白屏,也不报错;

@luo0412
Copy link

luo0412 commented Oct 11, 2024 via email

@wizardpisces
Copy link

已经 fix 了,是A 应用 mount 过程出问题了,导致 unmount 失效,然后阻塞其他子应用的 mount ;

@zhangjiayu1215
Copy link

已经 fix 了,是A 应用 mount 过程出问题了,导致 unmount 失效,然后阻塞其他子应用的 mount ;

是子应用内部逻辑有问题导致的mount出问题,还是加载过程出现异常导致的呢

@luo0412
Copy link

luo0412 commented Nov 1, 2024 via email

@wizardpisces
Copy link

已经 fix 了,是A 应用 mount 过程出问题了,导致 unmount 失效,然后阻塞其他子应用的 mount ;

是子应用内部逻辑有问题导致的mount出问题,还是加载过程出现异常导致的呢

子应用内部逻辑导致 unmount 失败了

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

No branches or pull requests