前提・実現したいこと
実装方法の話になるのですが、Vue.jsのコンポーネント間ではなく、vue-routerで設定した違うルートで表示されるページ(非親子)にデータを渡したい時の方法についてご教授いただきたいです。
具体的には、Contentコンポーネントのタイトルやサブタイトル、画像などの情報を遷移先のContentDetailコンポーネントに渡したいと思っています。しかし、ContentDetailコンポーネントはContentコンポーネントの子コンポーネントではなく、かつ、vuetifyのコンポーネントを使っており、propsを渡すタイミングや方法が不明と言う状況です。
初心者のため、検討違いな実装となっている可能性がありますが、ご教授いただけますと幸いです。
該当のソースコード
Content.vue
※:to="{ name: 'detailPage' }"の記述でContentDetailコンポーネントに遷移する設定をしています。(vuetifyの設定方法)
vue
1<template> 2 <v-card 3 class="v-card mx-auto" 4 max-width="1000" 5 tile 6 :to="{ name: 'detailPage' }" 7 > 8 <v-img src="https://picsum.photos/200" height="200px"> 9 <div class="fill-height bottom-gradient"></div> 10 </v-img> 11 <v-card-title> 12 Top western road trips 13 </v-card-title> 14 <v-card-subtitle> 15 1,000 miles of wonder 16 </v-card-subtitle> 17 </v-card> 18</template>
Home.vue
vue
1<template> 2 <v-app dark> 3 <Header /> 4 <!-- <router-link to="/detail">detail</router-link> --> 5 <router-view></router-view> 6 </v-app> 7</template> 8 9<script> 10import Header from "./components/Header.vue"; 11 12export default { 13 components: { Header }, 14}; 15</script>
ContentDetail.vue
<template> <div class="contentdetail"> <v-app> <v-carousel cycle hide-delimiters> <v-carousel-item v-for="(item, i) in items" :key="i" :src="item.src" ></v-carousel-item> </v-carousel> <div class="detailtext"> <h2>タイトル</h2> <p> {{src}} </p> </div> </v-app> </div> </template>
router.js
js
1import Vue from "vue"; 2import Router from "vue-router"; 3import ContentDetail from "@/components/ContentDetail.vue"; 4import Home from "@/components/Home.vue"; 5 6Vue.use(Router); 7 8export default new Router({ 9 mode: "history", 10 routes: [ 11 { 12 path: "/detail", 13 name: "detailPage", 14 component: ContentDetail, 15 }, 16 { 17 path: "/", 18 name: "home", 19 component: Home, 20 }, 21 ], 22}); 23
試したこと
https://forsmile.jp/vue/910/
こちらのサイトの方法を参考にしてみましたが、いまいちやり方がわかない状態です。
補足情報(FW/ツールのバージョンなど)
"core-js": "^3.6.5", "vue": "^2.6.11", "vue-router": "^3.4.9", "vuetify": "^2.2.11"
あなたの回答
tips
プレビュー