Nuxtにおける動的ルーティング
こんにちは👋
本稿では、Nuxtのダイナミックルーティングについて話します.
動的ルーティングにより、ルート変更を条件としてレイアウトやページを完全に変更せずにコンポーネントをレンダリングできます.
動的ルーティングは、Vueコンポーネントを条件的にレンダリングできます.
Vueは開発者にWebアプリケーションの基本的なビルディングブロックとしてコンポーネントを使用するよう奨励します.これにより、同じページに別々のコンポーネントをレンダリングすることができます.
例えば、ユーザーのテーブルリストを表示し、特定のユーザーがテーブルリストから選択されたときに、ユーザーの詳細にページを開く必要条件を仮定します.
動的ルーティングを使用すると、2ページコンポーネントを使用してこれを実現できます.
まず、ルートを使用します
/users
として保存されるusers.vue
ページの読み込み時にユーザーのテーブル一覧を読み込む.次に、ルートを使用して動的なページを使用します/users/:userId
として保存される_users.vue
フォルダの内部users
ユーザーの詳細を読み込む表リストのロールがクリックされたときのユーザー詳細のイメージ
始める
すぐに上記のイメージを実装する方法を行きましょう.
まず第一に、我々はダイナミックなページについて学ばなければなりません.
動的なページを作成することができますときには、ページの名前を知っていないAPIから来るか、または同じページを何度も繰り返し作成する必要はありません.動的ページを作成するには、アンダースコアを前に追加する必要があります.vueファイル名.ファイルやディレクトリに名前を付けることができますが、アンダースコアを付けてください.など
_dynamicpage.vue
.それで、我々のファイルのために、我々は名前をつけられたフォルダをつくるでしょう
users
その後、名前とフォルダ内のそれを保存_users.vue
次に、HTMLコンポーネントを作成します_users.vue
<template>
<div class="content">
<div class="row-1">
<div>
<h6>User ID</h6>
<p>{{users._id}}</p>
</div>
<div>
<h6>Name</h6>
<p>{{users.name}}</p>
</div>
<div>
<h6>Age</h6>
<p>{{users.age}}</p>
</div>
</div>
<div class="row-2">
<div>
<h6>Phone Number</h6>
<p>{{users.number}}</p>
</div>
<div>
<h6>Course</h6>
<p>{{users.course}}</p>
</div>
<div>
<h6>Gender</h6>
<p>{{users.gender}}</p>
</div>
</div>
<div class="row-3">
<div>
<h6>Email Address</h6>
<p>{{users.email}}</p>
</div>
<div>
<h6>Origin State</h6>
<p>{{users.state}}</p>
</div>
<div>
<h6>Reg Date</h6>
<p>{{users.date}}</p>
</div>
</div>
</div>
</template>
メイン部分には、スクリプトのセクションAPIからユーザのデータを取得するので、APIリクエストを呼び出します.(異なるメソッドを使ってAPIからデータを取得する方法についての記事を書きます.)
<script>
export default {
data() {
return {
users: {}
}
},
created () {
this.getUsersById()
},
methods: {
async getUsersById () {
const userIdPromise = await fetch(`https://sample.api.com/users/id/${this.$route.params.users}`)
const userIdJson = userIdPromise.json()
userIdJson.then((res) => {
this.users = res.data
})
}
}
}
</script>
我々のAPIの要求を呼び出しながら、我々は${this.$route.params.user}
APIリンクの後ろに.これは何ですか.
我々は
${this.$route.params.user}
ローカルページ内の現在のルートパラメーターにアクセスします.たとえば、動的な学生ページ(学生/RenMatCount . vue )を持っている場合、MATICONSTRパラメータにアクセスして学生やプロセスの情報を読み込む場合、以下のような変数にアクセスできます:
this.$route.params.matricnumber
.我々のダイナミックなページがそうであるので
/users.vue
.<template>
<div>
<table>
<tr class="table-head">
<th class="sn td-th">User ID</th>
<th class="td-th">Name</th>
<th class="td-th">Reg Date</th>
<th class="td-th">Email Address</th>
<th class="td-th">Course</th>
<th class="td-th">Action</th>
</tr>
<tr
v-for="users in userTable"
:key="users._id" class="table-body"
@click="$router.push(`/user/${users._id}`)">
<td class="sn td-th">{{ users._id }}</td>
<td class="td-th">{{ users.name }}</td>
<td class="td-th">{{ users.date }}</td>
<td class="td-th">{{ users.email }}</td>
<td class="td-th">{{ users.course }}</td>
</tr>
</table>
</div>
</template>
どうしましたか.私たちはオンクリック機能を追加
@click
クリックしたときに動的なページに移動し、特定のユーザーIDのURLを与える必要があります/user/${users._id}
では、APIからテーブルデータを取得します<script>
export default {
data() {
return {
userTable: []
}
},
created () {
this.getUsers()
},
methods: {
async getUsers() {
const promise = await fetch('https://sample.api.com/users')
const usersJson = promise.json()
usersJson.then((res) => {
this.userTable = res.data
})
}
}
}
</script>
概要
この記事では、Vue $ routeオブジェクトを使用して、ページ間で一般的に動的IDまたは文字列を転送する方法を説明しました.以前に述べたように、APIがエンティティのIDを必要とするときにバックエンドからデータを取り出すのは特に便利です.
私に何かを尋ねるために従事し、下記のコメントをお気軽に!私は常に話をし、助けてうれしいです.
読んでくれてありがとう!
有用資源
Reference
この問題について(Nuxtにおける動的ルーティング), 我々は、より多くの情報をここで見つけました https://dev.to/davidemaye/dynamic-routing-in-nuxt-5g9テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol