私はVue Routerを使ってページ内のアンカーを扱うスマートな方法を探しています。次のことを考えてみましょう:Vue Routerでアンカー(ブックマーク)を扱うには?
<router-link to="#app">Apply Now</router-link>
<!-- some HTML markup in between... -->
<div id="app">...</div>
除いて正常に動作しますdescribed in the docs行動を「固定するスクロール」:あなたがアンカーをクリックすると、それはdiv id="app"
までをもたらします
- 。今すぐ
div
からスクロールしてアンカーに戻ってもう一度クリックしてください。ではなくがdiv
にジャンプします。実際、アンカーはクラスrouter-link-active
を保持し、URLにはまだハッシュ/#app
が含まれます。 - 上記の手順でページを更新すると(URLにはまだハッシュが含まれています)、アンカーをクリックしても何も起こりません。
これは潜在的な顧客が手動でアプリケーションセクションに到達するために手動で再びスクロールする必要があるため、UXの観点からは非常に残念です。
私はVue Routerがこのような状況をカバーしているのか疑問に思っていました。参考のために、ここに私のルータです:私はあなたの問題を解決するためのリソースには何も見つかっていない
export default new VueRouter({
routes,
mode: 'history',
scrollBehavior(to, from, savedPosition) {
if (to.hash) {
return { selector: to.hash }
} else if (savedPosition) {
return savedPosition;
} else {
return { x: 0, y: 0 }
}
}
})
かかわら
は、悲しいことに、あなたはスクロールオフセットを使用するカント!私は、ルータ自体にクリックイベントを割り当てる方法があったと思う。私は 'beforeEach'を試しましたが、ブックマークで起動するようには見えません。 – Alex
@Alex githubリポジトリに問題を追加して、より良いアプローチがあるかどうかを確認することができます。これはほぼ確実です。 –
[Vue.js forum]で同じ質問をしています(https://forum.vuejs.org/t/how-to-handle-anchors-bookmarks-with-vue-router/14563)。私はGithubを信じています。StackOverflowとフォーラムに戻ってくるのは、ある種のバグレポートでない限り、あなたを参照する傾向があります:) – Alex