umijs / qiankun

📦 🚀 Blazing fast, simple and complete solution for micro frontends.
https://qiankun.umijs.org
MIT License
15.79k stars 2.01k forks source link

同时加载多个子应用,卸载后再打开白屏,single-spa minified message #31 #2692

Open Echonessy opened 1 year ago

Echonessy commented 1 year ago

What happens?

打开tabA、打开tabB,关闭tabA,再打开tabA qiankun会挂载失败 single-spa minified message https://github.com/umijs/qiankun/issues/31

/**
 * @description: 2.4.4
 * @return {*}
 */
  const appInstanceId = `${appName}_${+new Date()}_${Math.floor(Math.random() * 1000)}`;
/**
 * @description: >2.4.4
 * @return {*}
 */
export const genAppInstanceIdByName = (appName: string): string => {
  const globalAppInstanceMap = getGlobalAppInstanceMap();
  if (!(appName in globalAppInstanceMap)) {
    nativeGlobal.__app_instance_name_map__[appName] = 0;
    return appName;
  }

  globalAppInstanceMap[appName]++;
  return `${appName}_${globalAppInstanceMap[appName]}`;
};

  const appInstanceId = genAppInstanceIdByName(appName);

这样会导致一个问题,就是我tabA unmount之后, globalAppInstanceMap[appName]++; 会从头开始计算,但是已经unmount了

最小可复现仓库

复现步骤,错误日志以及相关配置

打开tabA、打开tabB,关闭tabA,再打开tabA qiankun会挂载失败 single-spa minified message https://github.com/umijs/qiankun/issues/31

相关环境信息

gongshun commented 1 year ago

关闭 tabA,需要手动卸载这个子应用

https://github.com/umijs/qiankun/issues/1734#issuecomment-947466824