2021/01/28
VueJSでイベントに追加の引数を渡すやり方
概要
以下のような感じのイベントを発生させるコンポーネントを作ったのですが
そのイベント発生時に追加で引数を渡す必要が出てきたので、調べて実装してみました。
コンポーネント(/components/Hoge.vue)
<template>
<div>
<p>{{ value }}</p>
<button @click="increment">increment</button>
</div>
</template>
<script>
export default {
props: {
value: {
type: Number,
required: true,
default: 0,
},
},
methods: {
increment() {
this.$emit('input', value + 1)
},
},
}
</script>
使う側
<template>
<div>
<!-- ここで handleIncrementedに引数を渡したい -->
<hoge v-model="num" @input="handleIncremented"></hoge>
</div>
</template>
<script>
import Hoge from '@/components/Hoge.vue'
export default {
components: {
Hoge,
},
data() {
return {
num: 1,
}
},
methods: {
handleIncremented() {
// TODO
},
},
}
</script>
やったこと
こちらに解決策が書いてありました。
$event
という引数を第一引数に渡してあげれば良いようでした。
<template>
<div>
<!-- ここで handleIncrementedに引数を渡したい -->
<hoge v-model="num" @input="handleIncremented($event, 'param1', 'param2')"></hoge>
</div>
</template>
<script>
import Hoge from '@/components/Hoge.vue'
export default {
components: {
Hoge,
},
data() {
return {
num: 1,
}
},
methods: {
handleIncremented(event, param1, param2) {
console.log(`new_num: ${event}, param1: ${param1}, param2: ${param2}`)
// "new_num: 2, param1: param1, param2: param2"
},
},
}
以上です。
関連する記事
Nuxt2からNuxt3への移行とNextJSとNuxt3の比較について
弊社ホームページとブログサイトをNuxt2からNuxt3ベースに移行しました。
Nuxt.jsからNext.jsへのリニューアルを経て思うこと
Nuxt.jsからNext.jsへフルリニューアルしたことで見えてきた個人的なメリットとデメリットを整理します
AOSをNuxtJSのサイトに導入する
スクロールアニメーションを簡単に実装できるAOSというライブラリをNuxtJSベースのサイトに導入しました
VueJSでイベントに追加の引数を渡すやり方
VueJSでカスタムコンポーネントのイベント発生時に引数を追加で渡すやり方がわからなかったので調べて対応しました。