qiankun icon indicating copy to clipboard operation
qiankun copied to clipboard

主应用中调用vue-router.push后navigate走了两遍!

Open django-d opened this issue 3 years ago • 8 comments

What happens?

在vue-router 中 调用 push后, 内部执行了 路由守卫, 并执行了 history.pushState 本身是不会触发 popstate 事件, 但是 single-spa 劫持了 pushState 方法, 手动创建了一个 popstate 事件. 所以导致了 vue-router 的 navigate 走了两遍 , 路由守卫也走了两遍 已经开启了 urlRerouteOnly: true popsate 也只出发一次, 感觉这里设计上有点矛盾?

相关环境信息

  • qiankun 版本: 4.2.1
  • 浏览器版本:版本 91.0.4472.106(正式版本) (x86_64)
  • 操作系统:Mac os 11.4

django-d avatar Jun 21 '21 08:06 django-d

https://github.com/umijs/qiankun/issues/1423

gongshun avatar Jun 25 '21 08:06 gongshun

What happens?

在vue-router 中 调用 push后, 内部执行了 路由守卫, 并执行了 history.pushState 本身是不会触发 popstate 事件, 但是 single-spa 劫持了 pushState 方法, 手动创建了一个 popstate 事件. 所以导致了 vue-router 的 navigate 走了两遍 , 路由守卫也走了两遍 已经开启了 urlRerouteOnly: true popsate 也只出发一次, 感觉这里设计上有点矛盾?

相关环境信息

  • qiankun 版本: 4.2.1
  • 浏览器版本:版本 91.0.4472.106(正式版本) (x86_64)
  • 操作系统:Mac os 11.4 请问下你用的 vue-router 的版本是多少

GOGOGOSIR avatar Aug 03 '21 07:08 GOGOGOSIR

What happens?

在vue-router 中 调用 push后, 内部执行了 路由守卫, 并执行了 history.pushState 本身是不会触发 popstate 事件, 但是 single-spa 劫持了 pushState 方法, 手动创建了一个 popstate 事件. 所以导致了 vue-router 的 navigate 走了两遍 , 路由守卫也走了两遍 已经开启了 urlRerouteOnly: true popsate 也只出发一次, 感觉这里设计上有点矛盾?

相关环境信息

  • qiankun 版本: 4.2.1
  • 浏览器版本:版本 91.0.4472.106(正式版本) (x86_64)
  • 操作系统:Mac os 11.4 请问下你用的 vue-router 的版本是多少

应该是vue-router4才有这个问题

HULIANGA avatar Aug 06 '21 07:08 HULIANGA

我也遇到这个问题了,有解决方式吗

tiyunchen avatar Nov 17 '21 02:11 tiyunchen

2022年了,解决方案还没出来嘛?

zwj9297 avatar Jan 04 '22 05:01 zwj9297

这个问题有什么兼容的方法吗?相当的坑啊。触发了页面刷新,导致数据错误

wangweijia avatar Feb 25 '22 05:02 wangweijia

这个问题有什么兼容的方法吗?相当的坑啊。触发了页面刷新,导致数据错误

我也碰到这个问题,在 vue router 全局前置钩子 beforeEach 判定 fullpath 是否相同 false 掉就可以了,等待官方修复吧

Go-loneliness-of-man avatar May 12 '22 03:05 Go-loneliness-of-man

我也遇到,vue子应用加载两次

liwei511 avatar Jul 15 '22 08:07 liwei511

vue-router 4.1.0版本已修复该问题,为router实例添加了listening属性用于暂停监听issue

Hertz9409 avatar Nov 11 '22 09:11 Hertz9409