Обработка событий — ключевая часть интерактивности Vue-приложений. Рассмотрим все аспекты работы с событиями.
Директива v-on
(или сокращенно @
) используется для подписки на события:
<button v-on:click="handleClick">Клик</button>
<!-- Сокращенная запись -->
<button @click="handleClick">Клик</button>
<button @click="submitForm">Отправить</button>
methods: {
submitForm() {
// Логика обработки
}
}
<button @click="count++">Добавить: {{ count }}</button>
<button @click="sayHello('John')">Привет</button>
Используйте $event
для доступа к нативному событию:
<input @input="handleInput($event)" />
methods: {
handleInput(event) {
console.log(event.target.value);
}
}
Vue предоставляет удобные модификаторы:
<form @submit.prevent="onSubmit">...</form>
Доступные модификаторы:
.stop
- event.stopPropagation().prevent
- event.preventDefault().capture
- режим capture.self
- только если событие на самом элементе.once
- сработает один раз.passive
- passive event listeners<input @keyup.enter="submit" />
<input @keyup.esc="cancel" />
<div @click.middle="middleClick">Средняя кнопка</div>
<div @click.right.prevent="rightClick">Правая кнопка</div>
this.$emit('my-event', payload);
<child-component @my-event="handleEvent" />
Для прослушивания нативных событий на корневом элементе компонента:
<my-component @click.native="handleClick" />
<div
@click="handleClick"
@mouseover="handleMouseOver"
@mouseout="handleMouseOut"
>
Интерактивный элемент
</div>
Ключевые моменты обработки событий:
✔ Используйте v-on
или @
для подписки на события
✔ Можете вызывать методы или использовать инлайн-выражения
✔ Доступ к нативному событию через $event
✔ Используйте модификаторы для частых задач (.stop, .prevent)
✔ Кастомные события через $emit
для коммуникации компонентов
✔ Модификаторы клавиш упрощают обработку ввода
Лучшие практики:
.key
модификаторыПравильная обработка событий делает приложение более отзывчивым и поддерживаемым.