我的App.vue
具有以下设置:
// App.vue
<template>
<div id="app">
<router-view/>
</div>
</template>
并且Home.vue
链接到Gmap.vue
:
// Home.vue
<template>
<div>
<router-link to="/gmap">vue2-google-maps</router-link>
</div>
</template>
并且Gmap.vue
具有vue2-google-maps中的<GmapMap>
分量:
// Gmap.vue
<template>
<div>
<GmapMap :center="{lat: 0, lng: 0}" :zoom="10">
</GmapMap>
</div>
</template>
最后router.js
像这样:
export default new Router({
mode: "history",
routes: [
{
path: "/",
name: "home",
component: Home
},
{
path: "/gmap",
name: "gmap",
component: Gmap
}
]
})
在Safari中,在路径/
上,单击<router-link>
时,Safari浏览器导航到/gmap
并将/gmap
路径放入Safari的window.history
中。因此,单击Safari的后退按钮将使Safari导航回到/
。
然后再次单击<router-link>
将使Safari浏览到/gmap
。但是,此时Safari会将/gmap
路径两次放入Safari的window.history
中(第一个/gmap
和第二个/gmap
)。因此,单击Safari的后退按钮将不会使Safari导航到/
。取而代之的是,Safari将导航到第一个/gmap
。
我确认:
/gmap
和第二个/gmap
之间来回移动时,未触发popstate
事件,并且Vue Router没有捕获到更改,因此没有任何导航卫士调用。<GmapMap>
组件的组件,则不会发生这种情况为什么Safari两次输入相同的路径?
答案 0 :(得分:0)
尽管不是确切的答案,但要解决此问题,请在<keep-alive>
中将<router-view>
换成App.vue
:
// App.vue
<template>
<div id="app">
<!-- Note that <router-view> is wrapped by <keep-alive> -->
<keep-alive>
<router-view />
</keep-alive>
</div>
</template>
来源:GitHub discussion。