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

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

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

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

Firebase

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

Vuex

Vuexは、Vue.js アプリケーションのための状態管理ライブラリです。アプリケーション内で使用するコンポーネントのための集中データストアを提供。コンポーネント同士でデータをやり取りし、処理のフローを一貫させたり、データの見通しを良くすることができます。

Q&A

解決済

1回答

2166閲覧

ユーザー個別ページに直接行くと情報を取得できない(Vue, Vuex)

Khy

総合スコア118

Vue.js

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

Firebase

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

Vuex

Vuexは、Vue.js アプリケーションのための状態管理ライブラリです。アプリケーション内で使用するコンポーネントのための集中データストアを提供。コンポーネント同士でデータをやり取りし、処理のフローを一貫させたり、データの見通しを良くすることができます。

0グッド

0クリップ

投稿2019/05/06 08:42

会員登録制のWebアプリを作っており、/user/:idというURLでユーザー個別のページに飛べるようにしております。

トップページから進んで行った場合はきちんとユーザー情報を取得することができるのですが、いきなり/user/:idに行くと情報を取得することが出来ません。

ユーザーの情報はVuexにて管理しており、App.vueにてcreated()でセットしております。
App.vueおよびUser.vue(ユーザー個別ページ)のコードは以下の通りです。

どこに問題があるのかご教授いただきたいです。よろしくお願い致します。

App

1<script> 2import firebase from 'firebase' 3import db from '@/fb' 4 5export default{ 6 7 data(){ 8 return{ 9 users: [], 10 } 11 }, 12 13 created(){ 14 15 //Firebaseから全てのユーザー情報を取得 16 db.collection('users').onSnapshot(res => { 17 const changes = res.docChanges(); 18 19 changes.forEach(change => { 20 if(change.type === 'added'){ 21 if(change.doc.id !== this.currentUserUid){ 22 this.users.push({ 23 ...change.doc.data(), 24 id: change.doc.id 25 }); 26 } 27 } 28 }); 29 // Vuexにユーザー情報セット 30 this.$store.commit('setOtherUsers', this.users); 31 }); 32 33 } 34} 35</script>

User

1<template> 2 <div> 3 <h1>{{thisUser.onamae}}</h1> //表示できません。 4 <p>{{thisUser.profile}}</p> //表示できません。 5 </div> 6</template> 7 8<script> 9export default{ 10 11 data(){ 12 return{ 13 userAccountName: '', 14 } 15 }, 16 17 created(){ 18 this.userAccountName = this.$route.params.id; //現在のユーザーのアカウント名(/user/:idの:idと同じ) 19 20 let self = this; 21 var thisUserData = self.otherUsers.filter(function(user){ 22 if (user.accountName == self.userAccountName) return true; 23 }); 24 25 thisUserData = thisUserData[0]; 26 27 this.$store.commit('setThisUser', thisUserData); //Vuexに現在のページのユーザー情報をセット 28 }, 29 30 31 computed: { 32 ...mapGetters([ 33 'otherUsers', 34 'thisUser', //setThisUserでセットした情報のgetter 35 ]), 36 }, 37 38} 39</script> 40 41

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

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

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

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

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

guest

回答1

0

自己解決

以下の記事を読み自己解決致しました。
https://qiita.com/ikemura23/items/f33dab559b78ae6c87f3

投稿2019/05/06 16:18

Khy

総合スコア118

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問