8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Nuxt】動的ルーティングをすぐ忘れるからまとめてみた

Posted at

#はじめに
本記事へのアクセスありがとうございます。
動的ルーティングの詳細について理解度を深めるため、忘れないようにするために簡潔にまとめてみます。
では、さっそく見ていきましょう。

#基本的なルーティング方法
想定ディレクトリは下記の通りです。

├─pages
│  ├─index.vue
│  ├─test
│  │   └─test.vue

##nuxt-linkを用いる

.pages/index.vue
<template>
   <nuxt-link to="/test">testへ遷移</nuxt-link>
</template>

##router-linkを用いる 【nameを使う】

.pages/index.vue
<template>
   <router-link :to="{name: 'test'}">testへ遷移</router-link>
</template>

##router-linkを用いる 【pathを使う】

.pages/index.vue
<template>
   <router-link :to="{path: 'test'}">testへ遷移</router-link>
</template>

##router-pushを用いる 【nameを使う】

.pages/index.vue
<template>
   <btn @click="transition()"> submit </v-btn>
</template>

<script>
export default {
  methods: {
    transition() {
      this.$router.push({ name: 'test' })
     },
   }
}
</script>

##router-pushを用いる 【pathを使う】

.pages/index.vue
<template>
   <btn @click="transition()"> submit </v-btn>
</template>

<script>
export default {
  methods: {
    transition() {
      this.$router.push('test')
     },
   }
}
</script>

#paramsを使ったルーティング方法
想定ディレクトリは下記の通りです。

├─pages
│  ├─test
│  │   ├─_hoge
│  │        └─index.vue

##paramsを使ったルーティング引数なし

.pages/index.vue
<template>
   <btn @click="transition()"> submit </v-btn>
</template>

<script>
export default {
  methods: {
    transition() {
         this.$router.push({ name: 'test-hoge', params: {hoge: 123 } })
     },
   }
}
</script>

##paramsを使ったルーティング引数あり

.pages/index.vue
<template>
   <btn @click="transition(123)"> submit </v-btn>
</template>

<script>
export default {
  methods: {
    transition(hoge) {
         this.$router.push({ name: 'test-hoge', params: { hoge } })
     },
   }
}
</script>

##paramsを使ったルーティング方法 ( _index.vueバージョン )
想定ディレクトリは下記の通りです。

├─pages
│  ├─test
│  ├─hoge
│  │  └─_id.vue
.pages/index.vue
<template>
   <btn @click="transition()"> submit </v-btn>
</template>

<script>
export default {
  methods: {
    transition() {
         this.$router.push({ name: 'hoge-id', params: { id : 123 } })
     },
   }
}
</script>

##paramsを使ったルーティング方法 ( 2階層から3階層目 )
想定ディレクトリは下記の通りです。

├─pages
│  ├─index.vue
│  ├─test   
│  │   ├─ _hoge   
│  │        ├─ index.vue   
│  │        ├─_hoo
          └─ index.vue  
.pages/test/hoge/index.vue
<template>
   <btn @click="transition(123)"> submit </v-btn>
</template>

<script>
export default {
  methods: {
    transition(hoo) { 
         const hoge = this.$route.params.hoge
         this.$router.push({ name: 'test-hoge-hoo', params: { hoge , hoo} })
     },
   }
}
</script>

#おわりに
お疲れ様でした。

少しでも役に立ったと思う方がいましたらLGTMをお願いします🙇‍♂️

queryについてのルーティングも気が向いたら追記します。

8
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?