#ページ毎に遷移先を設定したいです。
※各コンポーネントは下記にコードを掲載しております。
board.vueにリストを表示しており、そのリストにそれぞれ「ルームへ参加」のボタンを設けており、
そのボタンを押下するとchat.vueへページ遷移されるようにしています。
そこでチャットページより以下のようにchat.vueにて左上に矢印マークを設けて
router.vueに掲載しているようにboard.vueに戻るようにコードを記述してます。
<router-link :to="`/board/${this.uid}`" class="back-btn">にてページ遷移。
チャットページから戻る際には投稿一覧のあるboard.vueに戻って正解なのですが、
mypage.vueにもログイン中のユーザーが投稿したものと分かるようにマイページ内に
ユーザーの投稿した投稿一覧を設けております。
その投稿からチャットページに入って左上の「矢印ボタン(戻る)」を押下したら
マイページから入ったチャットページですがboard.vueに遷移してしまします。
(:to="/board/${this.uid}
"としているので当然の挙動なのですが・・・)
◆board.vueからチャットルームに入ってページを戻る際は、board.vueへ
◇mypage.vueからチャットルームに入ってぺージを戻る際は、mypage.vueへ
それぞれ同じコンポーネントを使用して、一つ前のページに戻るようにすることは可能でしょうか。
分かる方いらっしゃいましたらお力添えを頂きたいです。
宜しくお願い致します。
#chat.vue
chat
1<template> 2 <div class="chat"> 3 <h1 class="chat-tll flex"> 4 <div class="flash neon">Chat Room</div> 5 <router-link :to="`/board/${this.uid}`" class="back-btn"> 6 7 ~ 省略 ~ 8 9 </div> 10 </transition-group>
#router.vue
router
1 { 2 path: "/board/:uid", 3 name: "Board", 4 component: Board, 5 }, 6 { 7 path: "/chat/:id", 8 name: "Chat", 9 component: Chat, 10 meta: { requiresAuth: true }, 11 },
#board.vue
board
1<template> 2 <div> 3 <Header /> 4 <Post /> 5 <div class="post"> 6 <h2 class="post-tll neon">投稿一覧</h2> 7 <div class="post-inner"> 8 <div class="post-items"> 9 <List 10 v-for="(list, index) in allData" 11 :index="index" 12 :list="list" 13 :key="list.id" 14 /> 15 </div> 16 </div> 17 </div> 18 </div> 19</template>
<script> export default { data() { return { title: "", contents: "", image: "", allData: [], }; }, created() { firebase .firestore() .collection("posts") .orderBy("time", "desc") .limit(16) .get() .then((snapshot) => { snapshot.forEach((doc) => { this.allData.push({ ...doc.data(), id: doc.id }); console.log(this.allData); }); }); }, }; </script>
#mypage.vue
mypage
1<h3 class="post-list flex">{{ profileData.name }} さんの投稿一覧</h3> 2 <div class="profile-posts"> 3 <List 4 v-for="(list, index) in listData" 5 :index="index" 6 :list="list" 7 :key="list.id" 8 /> 9 </div>
firebase .firestore() .collection("posts") .where("uid", "==", this.$route.params.uid) .get() .then((snapshot) => { snapshot.forEach((doc) => { this.listData.push(doc.data()); }); });
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。