【Vue3】v-onとは?使い方を7パターン紹介する

【Vue3】v-onとは?使い方を7パターン紹介する

v-onはhtml要素のイベントに関連するディレクティブ(vue独自の属性)です。

ボタンをクリックした時に、特定の処理を行いたい時などに使うことができます。

この記事を書いた人

@takasqr アプリケーション開発が大好きなエンジニア。Vue、Swift、Electrom などでアプリを作って公開している。AWS や Firebase などのクラウドサービスも好き。

使い方

使い方を紹介します。全部で7パターンあります。Vue3で動きます。

1. 基本形

v-onの基本的な書き方です。

<button v-on:[イベント名]="[Javascript式]">ボタン</button>

実行したい[Javascript式][イベント名]を要素に書いていきます。

具体的にはこのように書きます。

<template>
  <div>
    <button v-on:click="counter += 1">+1</button>
    <p>count: {{ counter }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      counter: 0
    }
  }
}
</script>

2. 省略したv-onの書き方

v-on@に省略することができます。 v-on:clickを@clickと書くことで、少しですがタイプ数を減らすことができます。

<button v-on:click="counter += 1">+1</button>

👇

<button @click="counter += 1">+1</button>

二つのコードは同じ内容です。

3. メソッド

Javascript式だけでは、複雑な処理を行うのにコードの見栄えが悪くなってしまいます。そこで、v-onではmethodsを呼び出すこともできます。処理が複数行になる場合はこちらの方が便利です。

<button @click="countUp()">+1</button>

countUp()のメソッドを呼び出す部分はcountUpとかっこを省略しても大丈夫です。

<button @click="countUp">+1</button>

4. メソッド引数付き

メソッドに引数を渡せます。dataの値を動的に使いながらmethodsを呼び出す時などに便利です。

<button @click="countUp(1)">+1</button>

5. イベント修飾子

ディレクティブの動きを変更する修飾子という仕組みがあります。v-onにいくつか修飾子があります。 .preventのような形で表現します。

<form @submit.prevent="onSubmit"></form>

上の例は、event.preventDefault()を呼び出すので、ページがリロードされるのを防ぎます。

6. キー修飾子

「エンターが押されたとき」などの特定のキーボードイベントを捕捉することもできます。キー修飾子を使います。

<input v-on:keyup.enter="onSubmit">

7. イベントを渡す

$eventmethodsの引数として渡すことで、methodsの中でDOMイベントにアクセスできます。

<button @click="countUp(1, $event)">+1</button>

コーディングのポイント

公式ドキュメントを読むと、 メソッドにはロジックのみを書いていくべき という設計思想のようです。そのためにイベント修飾子がある。

そうすることで、コードが読みやすくなって、ユニットテストもしやすくなるというメリットがあります。