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 13:33
2018/11/12 14:01
2018/11/14 00:31
2018/11/16 15:44
2018/11/17 07:22
2018/11/17 16:59
2018/11/25 01:49
2018/11/26 00:46
2018/11/26 01:00