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

主应用中跳转路由(都是子应用的activeRule的路径),子应用总是先卸载再加载 #2748

Closed
776725893 opened this issue Oct 22, 2023 · 13 comments

Comments

@776725893
Copy link

提问之前强烈建立您能先阅读一下《如何正确的提出一个 Issue》

What happens?

父应用在加载子应用后,在父应用的tabs栏跳转,子应用总是先卸载又安装。
子应用为vue-cli配置的vue3框架
比如子应用的activeRule为/sub-cost
父亲应用从/sub-cost/1 去往 /sub-cost/2
微应用还是会卸载。目前排查到的原因是去往/sub-cost/2的时候
activeRule的pathname为1导致返回的false,组件卸载
image
1697973236962

最小可复现仓库

github地址:
https://github.com/776725893/qiankun-err-demo

为节约大家的时间,无复现步骤的 ISSUE 会被关闭,提供之后再 REOPEN

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

相关环境信息

  • qiankun 版本2.10.11
  • 浏览器版本:谷歌浏览器118.0.5993.89
  • 操作系统:win10/win11
@776725893
Copy link
Author

子应用使用官方vue3的demo也会有这个问题,但是子应用是vue2的目前不会出现该问题

@776725893
Copy link
Author

@bravepg 大佬能帮忙看看嘛

@bravepg
Copy link
Contributor

bravepg commented Oct 23, 2023

@bravepg 大佬能帮忙看看嘛

ok 我看看

@kuitos
Copy link
Member

kuitos commented Oct 23, 2023

这个好像是 vue3 的 bug? @gongshun

@bravepg
Copy link
Contributor

bravepg commented Oct 23, 2023

image

看起来是主应用和子应用的路由实例冲突了,如果我直接 pushState 的话是 ok 且也会执行两次

image

@776725893
Copy link
Author

#1865
是vue-router4的问题。根据这个回答在beforeEach里面的配置暂时解决了。
image

@sir-ran
Copy link

sir-ran commented Oct 26, 2023

#1865 是vue-router4的问题。根据这个回答在beforeEach里面的配置暂时解决了。 image

怎么解决的啊,感觉就是vue-router4的原因。

@776725893
Copy link
Author

#1865 是vue-router4的问题。根据这个回答在beforeEach里面的配置暂时解决了。 image

怎么解决的啊,感觉就是vue-router4的原因。

我是根据这个回答在beforeEach中配置解决的
#1865 (comment)

@776725893
Copy link
Author

使用上述解决方案后出现,浏览器返回时,url拼接的参数丢失。对别人的代码做出改正后正常。
let current: any = window.location.pathname.split("/"); if (current[1] === current[2]) { current = current.slice(2); current = current.join("/"); current = current.startsWith("/") ? current : "/" + current; current += window.location.search + window.location.hash; history.replaceState( { back: from.fullPath, current: window.location.pathname + window.location.search + window.location.hash, }, String(to.name), current ); } else { history.replaceState( { back: from.fullPath, current: window.location.pathname + window.location.search + window.location.hash, }, String(to.name), "" ); }

@pantheonyang
Copy link

子应用路由路径和主应用路由保持一致就行,但是还是部分页面会出现空白
子应用动态加个根路径 path: qiankunWindow.POWERED_BY_QIANKUN ? "/project" : "/",

@qq1332783374
Copy link

我这边 vue3应用 在销毁的时候执行 router.options.history.destory 方法 可以完美解决跨应用跳转问题
企业微信截图_17018524103208

@776725893
Copy link
Author

我这边 vue3应用 在销毁的时候执行 router.options.history.destory 方法 可以完美解决跨应用跳转问题 企业微信截图_17018524103208

感觉不太对呢,demo是同一应用切换一直会卸载=>加载。按理来说切换是不会执行卸载操作的,所以你这段代码是不会执行的

@github-actions github-actions bot closed this as completed Jan 6, 2024
Copy link

github-actions bot commented Jan 6, 2024

Since the issue was labeled with out-of-scope, but no response in 30 days. This issue will be close. If you have any questions, you can comment and reply.
由于该 issue 被标记为与本项目无关,却 30 天未收到回应。现关闭 issue,若有任何问题,可评论回复。

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

6 participants