a minute ago

Vue.jsでPage間の値渡しを行う2つの方法


基礎知識

Vue.js(Nuxt.js)を使って、URLから値を渡す方法は以下の2種類があります。

  • パスパラメータ
  • クエリパラメータ

パスパラメータを使う時はurlの後ろにそのまま値がつきます。例)/user/123

クエリパラメータを使う時はキーと一緒にURLに付与されます。例)/user/?role=admin

ではどういう時にその2つを使い分けるか。API設計を行う際は知っておく必要があります。

本記事の最後にAppendixとして記述しておりますので、ぜひご一読ください。

実装

Tips

Vue.jsパスパラメータ/クエリパラメータの使い方

Quick Use

データの渡し方
// 1. パスパラメータ -> /user/123になる
$router.push({name: 'user', params: {userId: '123'}})
// 2. クエリ -> /user?userId=123になる
$router.push({path: 'user', query: {role: 'admin'}})

これをrouter-linkまたはnuxt-linkで行ったものが以下。

<!-- 1. パスパラメータ -->
<router-link
  :to="{name: 'register', params: {userId: 123}}"
>Sample</router-link>
<!-- 2. クエリ -->
<router-link
  :to="{name: 'register', query: {role: 'admin'}}"
>Sample</router-link>
データの受け取り方

1のパスパラメータは$route.paramsの中に入っています。

<!-- 1の受け取り方 -->
<template>
  <section>
    <p>{{ $route.params.userId }}</p>
  </section>
</template>

2のクエリは$route.queryの中に入っています。

<!-- 2の受け取り方 -->
<template>
  <section>
    <p>{{ $route.query.role }}</p>
  </section>
</template>

参考

Vue Routerの公式ドキュメント

Appendix.パスパラメータとクエリパラメータの使い分け方

ではどういう時にその2つを使い分けるか。API設計を行う際は知っておく必要があります。

パスパラメータ

パスパラメータは、あるデータに一意な情報でアクセスする時に使います。

以下のようなユーザーデータがあった時、user_idが定まれば対象のユーザーが一人だけ定まります。このような時、userデータにおいてuser_idは一意な情報と言えます。

user_idnamerole
1nameAadmin
2nameBslave
3nameCslave

この時、ある一人のユーザーの情報にアクセスしたい時には、パスパラメータを使うよう設計するのが適切とされます。

例)/user/1

クエリパラメータ

クエリパラメータは、あるデータを操作して取得したい時、手がかりとなる情報を渡すために使います。

先ほどのデータで、roleがadminのユーザーだけを取得したい時、{role: admin}といった情報をクエリパラメータで渡します。

例)/user/?role=admin


Related Articles