Vue.js

【Vue.js】イベントオブジェクトと任意の引数を同時に受け取る

2019/12/10

Vue.jsでは以下のように書くことで、「イベントオブジェクト」を引数として受け取ることが可能です。

<template>
  <!-- テンプレート側では何も渡さなくてOK -->
  <button @click="onClick">Click</button>
</template>

<script>
export default {
  methods: {
    onClick(event) {
      // 第1引数に自動的に入ってくる
      console.log(event)
    }
  }
}
</script>

一方、任意の引数を渡すことも可能です。

<template>
  <!-- 任意の値を指定 -->
  <button @click="onClick(1)">Click</button>
</template>

<script>
export default {
  methods: {
    onClick(number) {
      console.log(number) // 1
    }
  }
}
</script>

それでは、任意の引数とイベントオブジェクトを同時に受け取るにはどうすれば良いのでしょうか。

「$event」を引数として渡す

調べてみたところ、以下のようにすればOKでした。

<template>
  <!--  任意の引数と一緒に、通常のイベントオブジェクトも受け取れる。 -->
  <!--  その場合、「$event」という引数名にする。(「$event」は特別な引数名) -->
  <button @click="onClick(1, $event)">Click</button>
</template>

<script>
export default {
  methods: {
    onClick(number, event) {
      console.log(number) // 1
      console.log(event) // イベントオブジェクト
    }
  }
}
</script>

時間が経ったら忘れてしまいそうだったので、ブログにメモしておきます。