Vue.jsでrouter-link内のcomputedが呼び出されない
Q&A
Closed
解決したいこと
Vue.jsのチュートリアルとして
Vue-cliでページングを行う機能を搭載するWebアプリを作成しております。
本を参考にしており、記載されているコードをそのまま貼り付けましたが、期待する動きになりませんでした。
コードをいろいろ変えてみて$route.paramsは取得できていることはわかりましたが、
なぜcomputedが呼び出されないのかが分かりませんでした。
発生している問題・エラー
http://localhost:8080/paging/12
にアクセスした際の画面
該当するソースコード
project
-src
--views
---Paging.vue
<template>
<div class="about">
<h1>Page:{{$route.params.page}}</h1>
<router-link :to="'/paging/${prevPage}'">Prev</router-link>
<router-link :to="'/paging/${nextPage}'">Next</router-link>
</div>
</template>
<script>
export default {
computed: {
prevPage() {
return Number(this.$route.params.page) - 1
},
nextPage() {
return Number(this.$route.params.page) + 1
}
}
}
</script>
project
-src
--router
---index.js
import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from '../views/Home.vue'
Vue.use(VueRouter)
const routes = [
{
path: '/',
name: 'Home',
component: Home
},
{
path: '/about',
name: 'About',
// route level code-splitting
// this generates a separate chunk (about.[hash].js) for this route
// which is lazy-loaded when the route is visited.
component: () => import(/* webpackChunkName: "about" */ '../views/About.vue')
},
{
path: '/counter',
component: () => import(/* webpackChunkName: "count" */ '../views/Count.vue')
},
{
path: '/paging/:page',
component: () => import(/* webpackChunkName: "paging" */ '../views/Paging.vue')
}
]
const router = new VueRouter({
mode: 'history',
base: process.env.BASE_URL,
routes
})
export default router
project
-src
--App.vue
<template>
<div id="app">
<div id="nav">
<router-link to="/">Home</router-link> |
<router-link to="/about">About</router-link> |
<router-link to="/counter">Counter</router-link>
</div>
<router-view />
</div>
</template>
自分で試したこと
vuejs router-link computed 呼び出されない で検索をし
https://ics.media/entry/200716/
こちらの記事を見つけて、
3. 微妙に再計算されない/されるcomputed
を参考にconsole.logの追加をしてみましたが、ログが出力されていなかったので、
呼び出されていないことはわかりましたが、原因が分かりませんでした。
0