質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Cloud Firestore

Cloud Firestore は、自動スケーリングと高性能を実現し、アプリケーション開発を簡素化するように構築された NoSQLドキュメントデータベースです。

Q&A

解決済

1回答

1155閲覧

【Vue × Firestore】ページ毎に遷移先を設定したいです。

TMTN

総合スコア53

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Cloud Firestore

Cloud Firestore は、自動スケーリングと高性能を実現し、アプリケーション開発を簡素化するように構築された NoSQLドキュメントデータベースです。

0グッド

0クリップ

投稿2021/05/20 15:17

#ページ毎に遷移先を設定したいです。

※各コンポーネントは下記にコードを掲載しております。

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()); }); });

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

同じコンポーネントを使って遷移先をそれぞれ設定する方法が調べても見当たらないため、戻るボタンの実装をやめてハンバーガーメニューにて適用させました。

投稿2021/05/24 06:13

TMTN

総合スコア53

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問