Ownedmedia ウェブ制作に役立つコンテンツを発信中!

Vue.js 2020.02.11

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

Tags: ,,,

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

 

この記事を書いた人

オガワ シンヤ

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

  • Twitter

コメントフォーム

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

内容に問題なければ、お名前・ハンドルネームとメールアドレスを入力いただき、下記の「コメントを送信」ボタンを押してください。

CAPTCHA


この記事もよく読まれています

Scroll to Top
ご質問・ご相談はありませんか ?