Vue-routerを使ったサイトで「リンクをクリックしても遷移しない」という現象が起きて頭をひねっていた。
結論から言うと、同じコンポーネントから同じコンポーネントへ移動しようとすると、コンポーネントが再利用され、再描画されない現象が起こる。そのため、「リンクが効かない」ような錯覚を起こすことがわかった。
解決
Componentのjsに、computed; created()なんかと並列に以下を記述した。
beforeRouteUpdate (to, from, next) { //再描画前のアクション next(); //再描画後のアクション }
next()の前はもともとのコンポーネント、next()の後ろは更新後のコンポーネントが使われる。
ただ、データはこれで更新してもスクロール位置が動かないため、ページトップに戻してやりたくなる。その場合は、ルートインスタンスの routes: []などと並列で
scrollBehavior (to, from, savedPosition) { return { x: 0, y: 0 } }
を指定してやる。