0%

Programmingプログラミングナレッジ

Posted:2020.02.11

Vue.jsで動的にリンク先やクエリの値を操作する

Vue.jsでアプリケーションを作成していると、動的にリンク先やクエリの値を変更する必要がある場面も多々あるかと思います。今回はそのようなケースでの実装例をメモとして残しておきたいと思います。

 

まず、Vue.jsでリンクを指定する場合にはaタグではなく、下記のように「router-link」タグを使って設定します。この時に「to」の属性の値に遷移先のパスを指定する形になります。

<router-link to="/PATH/">固定リンク</router-link>

 

また、パスの値が動的に生成される場合などで、遷移先のパスが可変する場合には、v-bindディレクティブを使って、値に変数を指定する形になります。

<router-link :to="/PATH/`${id}`">可変リンク</router-link>

 

これらはあらかじめテンプレート内にHTMLと合わせて記述するパターンになりますが、javascriptで「location.href」のようにプログラム側でページ遷移させるときは少し方法が異なります。今回は、下記のようにセレクトボックスのチェンジイベントで、ページ遷移するような例をサンプルとしてみていきたいと思います。

 

下記のコードでは、セレクトボックスにチェンジイベントでmethodsに定義した関数を呼び出すようにしています。その関数では、セレクトボックスの値を取得し、その値を「$router.push()」で$routeのパスの値に入るようにしています。

【Vue】

<template>
 <div>
  <select @change="changePath()" ref="element">
   <option value="page-01">ページ1</option>
   <option value="page-02">ページ2</option>
   <option value="page-03">ページ3</option>
  </select>
 </div>
</template>
<script>
 export default {
  methods: {
   changePath() {
    const element = this.$refs.element
    this.$router.push(
     {
       path: element.value
     }
    )
   }
  }
 }
</script>

 

実際に実行してみると、選択肢の値が変わった瞬間にページが遷移したのがURLの変化より確認することができます。実際にデベロッパーツール上でも同じく変わっています。このようにVue.jsでは「$router.push()」を使って動的に遷移先を操作する形になります。

 

$router.push()ではパスの値だけでなく、クエリの値も同様に操作することができます。同じようなコードで、クエリに使う値が入ったセレクトボックスを用意しました。先ほどと違う点としては、$router.push()の引数に入っているオブジェクトで、クエリの値も追加されている点です。

【Vue】

<template>
 <div>
  <select @change="changeQuery()" ref="element">
    <option value="hoge">hoge</option>
    <option value="fuga">fuga</option>
    <option value="piyo">piyo</option>
  </select>
 </div>
</template>
<script>
 export default {
  methods: {
   changeQuery() {
    const element = this.$refs.element
    this.$router.push(
     {
      path: 'sample',
      query: {
       q: element.value
      }
     }
    )
   }
  }
 }
</script>

 

実際に実行してみると、クエリに値が入り、$route内にあるqueryの値にも反映されているのが確認でき、このようにパスの値やクエリの値は自由にjavascript側で操作することができます。クエリの値を操作することで、たくさんあるデータをカテゴリ別にアーカイブさせるときなどに役立ちます。

 


 

今回はVue.jsで動的にリンクやクエリの値を操作する方法についてまとめてみました。慣れるまではいろんなメソッドを覚える必要がありますが、これらはフレームワークを使わないとかなり大変な作業が必要になることも多く、是非覚えておきたいですね。そんな時には下記の書籍がわかりやすくておすすめです!

 

author
この記事を書いた人オガワ シンヤ
FacebookTwitter

DesignSupply.代表 / ディレクター・ウェブデザイナー・フロントエンドエンジニアをやっています。「ウェブとデザインでヒト・モノ・サービスを繋げ新しい価値を生み出す」をコンセプトに日々奮闘中!制作中はチョコレートが欠かせない三十路Webクリエイター。

制作のご依頼やお問い合わせ・パートナー業務提携のご相談はこちら

デザインやウェブ制作についてのご依頼やご相談、その他お問い合わせなどもお気軽にご連絡ください。フットワークの軽さやレスポンスの早さ、また豊富な経験や知識、技術を活かした対応力といったフリーランスクリエイターの強みでクライアント様、パートナー企業様のお力になります。デザインからコーディングやWordPress実装といったウェブサイト構築はもちろん、写真撮影や動画編集、コンテンツ制作からサイト運用サポートまで一括してお任せください。

ホームページ制作のご検討やウェブ運用でお悩みの経営者様や企業のウェブ担当者様をはじめ、個人で店舗を営んでいらっしゃるオーナー様、フリーで活動されているビジネスオーナー様はもちろんのこと、リソース不足でお困りの制作会社様、またクリエイターをお探しの代理店様も大歓迎です。

コンタクトをご希望の方はお手数ですが、下記よりお問い合わせフォームのページへアクセスしていただき、必要事項を入力の上メッセージを送信してください。確認でき次第すぐに折り返しご連絡致します。

こんな記事も読まれています

コメントもお気軽にどうぞ

記事に関するご質問やご意見などありましたら下記のコメントフォームよりお気軽に投稿ください。なおメールアドレスは公開されませんのでご安心ください。また、* が付いている欄は必須項目となります。

内容に問題なければ、下記の「コメントを送信する」ボタンを押してください。

CAPTCHA


ページトップへ
大阪市天王寺区のホームページ制作デザイン事務所(SOHO)DesignSupply.【デザインサプライ】