了解しました!
ここでは 第4章:テンプレート構文の基礎 の中の「イベント処理(クリック・入力など)」について解説します。
Vue 2ではイベント処理に v-on
(もしくは省略記法 @
) を使って、
クリック、入力、マウス操作などのDOMイベントを簡単にハンドリングできます。
ここでは以下のイベントを扱います:
@click
)@input
)@click.prevent
など)すべて Vue 2.7(TypeScript / <script setup>
構文)で書いています。
EventExample.vue
<template>
<!-- ボタンをクリックすると count が増える -->
<button @click="increment">カウント: {{ count }}</button>
<!-- テキスト入力に応じて name が更新される -->
<input type="text" v-model="name" @input="logInput" placeholder="名前を入力" />
<p>こんにちは、{{ name }}さん!</p>
<!-- 修飾子付きイベント:送信ボタンを押してもページがリロードされない -->
<form @submit.prevent="handleSubmit">
<input v-model="email" type="email" placeholder="メールアドレス" />
<button type="submit">送信</button>
</form>
</template>
<script lang="ts" setup>
// ref を使ってリアクティブ変数を定義
import { ref } from 'vue';
// 数値型のカウント変数
const count = ref(0);
// 名前入力用の変数
const name = ref('');
// メールアドレス入力用の変数
const email = ref('');
// クリックイベント:ボタンを押すとカウントを増やす
const increment = () => {
// count を1増やす
count.value++;
};
// 入力イベント:入力内容をコンソールに出力
const logInput = (event: Event) => {
// 入力イベントの値を取得してログ出力
console.log('入力中:', (event.target as HTMLInputElement).value);
};
// フォーム送信イベント:送信時の処理
const handleSubmit = () => {
// メールアドレスをコンソールに出力
console.log('送信されたメール:', email.value);
};
</script>
<template>
部分<!-- ボタンをクリックすると count が増える -->
<button @click="increment">カウント: {{ count }}</button>
@click
はクリックイベントを定義する記法(v-on:click
の省略)。increment()
関数が呼ばれる。