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

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

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

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

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

723閲覧

nuxtでuser_idをfirebaseから取得して動的にルーティングしたい

you88

総合スコア147

Firebase

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

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2018/11/11 23:31

https://ja.nuxtjs.org/guide/routing/#%E5%8B%95%E7%9A%84%E3%81%AA%E3%83%AB%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0

firebaseで認証したユーザーごとにマイページを作成したく、

ドメイン/mypage/user_id

にしたいのですがnuxtでuser_idをfirebaseから取得してparamsでurl作るのってどうやればいいのでしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

Nuxt.jsで動的なURLのページをつくるには、「_」ではじまる名前のvueファイルをつくります。

you88さんの場合、ディレクトリ構成は、

_user_idが必須でない場合、/pages/mypage/_user_id.vueとなり、
_user_idが必須の場合、/pages/mypage/_user_id/index.vueとなります。

あとは、ドメイン/mypage/1ドメイン/mypage/2など実際のIDをつけてアクセスするだけです。

他のコンポーネントからリンクを張りたければ、
<nuxt-link>to属性に、user_idをバインディングすれば、
現在認証しているユーザー用のページに動的に遷移できます。
user_idはVuexなどで一括管理すればいいと思います。

補足

ご自身でURLを記載されていますが、ドキュメントで言えば該当箇所はここです。

追記(2018/11/17)

<nuxt-link>に動的にリンク先を設定する場合は、以下のような方法でできます。

Vue

1<template> 2 <nuxt-link :to="mypageUrl">マイページ</nuxt-link> 3</template> 4 5<script> 6import { mapState } from 'vuex' 7 8export default { 9 name: 'sampleComponent', 10 computed: { 11 ...mapState({ 12 mypageUrl: (state) => `/mypage/${state.userId}` 13 }) 14 } 15} 16</script>

/store/index.jsは以下のようにします。
(Firebaseの認証については省略しています。あくまで動的リンクの設定に注目しています)

JavaScript

1import Vuex from 'vuex' 2 3const createStore = () => { 4 return new Vuex.Store({ 5 state: { 6 userId: '' // 初期値 7 }, 8 mutations: { 9 setUserId(...) { ... } 10 }, 11 actions: { 12 setUserId(...) { ... } 13 } 14 }) 15}

追記(2018/11/18)

以下の「...mapState({ ... })」の部分は、スプレッド構文です。
コード省略に「...」と書いていたので紛らわしかったかもしれません。すみません。

// 省略 computed: { ...mapState(/* 省略 */) } // 省略

...mapState()mapState()の結果(オブジェクト)をcomputed(オブジェクト)に展開します。

詳細は以下の参考資料を見てください。
MDN公式
Qiitaの記事1
Qiitaの記事2

投稿2018/11/12 02:57

編集2018/11/17 16:59
NozomuIkuta

総合スコア1260

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

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

you88

2018/11/12 13:33

ありがとうございます。user_idとfirebaseの認証したユーザー情報のidを紐付けるのはどうやったらいいんでしょうか?
NozomuIkuta

2018/11/12 14:01

認証ページ(ログインページ?)にユーザーID入力欄があると思いますが、ログインに成功(firebaseにユーザー情報がある)したら、入力されていたuser_idを、Vuexに格納して、各ページで利用すればよいのでは?追加の情報がないとなんとも言えませんが、ざっと言えばそんな感じだと思います。 もしくは、firebaseにあるユーザー情報を取得して、静的ページ(/mypage/1.htmlや/mypage/2.html)としてビルドしたいということでしょうか?
you88

2018/11/14 00:31

ありがとうございます! >入力されていたuser_idを、Vuexに格納して、各ページで利用すればよいのでは?追加の情報がないとなんとも言えませんが、ざっと言えばそんな感じだと思います。 こちらがイメージ近いです。user_idをurlのidにわたすのをどう書くのかがいまいちわからず。。。
you88

2018/11/17 07:22

ありがとうござます。 ...mapState の...はどういった意味のものになるでしょうか?
NozomuIkuta

2018/11/25 01:49

こちら、解決しましたか? この件に関して追加で質問などなければ「解決済」にしていただくと他の方が検索するときにわかりやすいのでお願いします。
you88

2018/11/26 00:46

こちら上記の方法で解決しました。ありがとうございました!
NozomuIkuta

2018/11/26 01:00

解決したようでよかったです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問