*プログラミング初心者なので根本的な部分からずれている場合があります。すみません。
知りたい事
VueRouterに関しての質問です。
同一コンポーネント内にVueRouterに関係する要素(RouterViewコンポーネントやrouter-link等)
が無いと$route内は参照出来ない物なのでしょうか。
もし参照出来る場合、そのやり方とサンプルコード等載せて頂けると嬉しいです。
現在やっている事と実現したい事
現在画面遷移に感知して特定のメソッドを発火させる処理を書いているのですが,
同一コンポーネント内にVueRouterに関係する要素が存在する場合のみでしか処理が動きません。
出来ればVueRouterに関係する要素が無くても$route内を参照出来る様にしたいです。
何故出来そうだと思っているのか
画面遷移情報は必ずしも同一コンポーネントが関わらないといけないと言う事は無さそうと漠然と感じており、
尚且つ自分が具体的なやり方を知らない・浮かばないだけではと思っている為です。
今のままだとやりたい事が伝わりにくいと思うので、コードを載せます。
例(同一コンポーネント内にVueRouterに関係する要素が存在して、画面遷移に感知して特定のメソッドを発火する場合)
vue
1//router.js 2import Vue from "vue"; 3import VueRouter from "vue-router"; 4 5Vue.use(VueRouter); 6 7const routes = [ 8 { 9 path: "/test1", 10 component: () => import("../components/test1") 11 }, 12 { 13 path: "/test2", 14 component: () => import("../components/test2") 15 } 16]; 17 18const router = new VueRouter({ 19 routes 20}); 21 22export default router;
vue
1//App.vue 2<template> 3 //VueRouterに関係する要素 4 <RouterView /> 5</template> 6<script> 7export default { 8 methods: { 9 check() { 10 console.log("画面遷移確認"); 11 }, 12 }, 13 watch: { 14 $route: "check", 15 }, 16}; 17</script>
この場合だと"/test1"から"/test2"に移動すると
"画面遷移確認"と出力されます
理想(同一コンポーネント内にVueRouterに関係する要素が存在しない)
vue
1//router.js 2import Vue from "vue"; 3import VueRouter from "vue-router"; 4 5Vue.use(VueRouter); 6 7const routes = [ 8 { 9 path: "/test1", 10 component: () => import("../components/test1") 11 }, 12 { 13 path: "/test2", 14 component: () => import("../components/test2") 15 } 16]; 17 18const router = new VueRouter({ 19 routes 20}); 21 22export default router;
vue
1//App.vue 2<template> 3 <RouterView /> 4</template>
vue
1//test2.vue 2<template> 3 //VueRouterに関係する要素なし 4 <div>テスト2画面です</div> 5</template> 6<script> 7export default { 8 methods: { 9 check() { 10 //この場合でも出力される様にしたい。(実際は出力されない) 11 console.log("画面遷移確認"); 12 }, 13 }, 14 watch: { 15 $route: "check", 16 }, 17}; 18</script>
この場合の様にVueRouterに関係する要素が無いコンポーネントでも$routeを参照して"/test1"から"/test2"に移動すると
"画面遷移確認"と出力される様にしたいです。
補足情報(FW/ツールのバージョンなど)
Vue: 2.6.11
Vue-router: 3.5.1
環境
CodeSandBox
*追記:問題が解決したので以前載せていた実行環境のテンプレートのURLは削除させてもらいました。
(実際に使っているGitHubと紐付けしており、アカウント名等が分かる状態なのが少し嫌なので)
正直あまり上手くやりたい事が伝えられた気がしないので、何かあり次第追記させて頂きます。
宜しくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/01 08:07 編集
2021/06/01 07:59
2021/06/01 08:14
2021/06/01 08:53
2021/06/01 08:54 編集
2021/06/01 09:51 編集
2021/06/01 10:08 編集