v-touch-hold — это директива в Quasar Framework, предназначенная для обработки событий длительного нажатия на элемент. Она позволяет реагировать на удерживание пользователем элемента, что особенно полезно для мобильных интерфейсов, сенсорных панелей и интерактивных элементов, где краткое нажатие и удержание могут выполнять разные действия.
Для использования v-touch-hold необходимо добавить директиву к элементу в шаблоне Vue:
<q-btn
label="Удерживать меня"
v-touch-hold="onHold">
</q-btn>
Здесь onHold — метод, который будет вызван после
установленного времени удержания. По умолчанию время срабатывания
составляет 600 мс, но его можно изменить через аргумент
:duration.
<q-btn
label="Удерживать меня 1 сек"
v-touch-hold="{ handler: onHold, duration: 1000 }">
</q-btn>
v-touch-hold поддерживает несколько ключевых аргументов в виде объекта:
false, активируется
только для сенсорных устройств.Пример с интервалом и предотвращением стандартного действия:
<div
v-touch-hold="{ handler: repeatAction, duration: 500, interval: 200, prevent: true }"
>
Нажимай и держи
</div>
methods: {
repeatAction() {
console.log('Длительное нажатие срабатывает каждые 200 мс');
}
}
v-touch-hold генерирует только одно основное
событие: вызов обработчика handler. Однако можно
комбинировать его с другими событиями для более сложного поведения.
Например, можно различать обычное нажатие и длительное удержание:
<q-btn
label="Нажми или удерживай"
@click="simpleClick"
v-touch-hold="{ handler: longHold, duration: 800 }"
/>
methods: {
simpleClick() {
console.log('Короткое нажатие');
},
longHold() {
console.log('Длительное удержание');
}
}
Такой подход позволяет создавать интерактивные кнопки с разным поведением в зависимости от времени нажатия.
mouse: true
позволяет симулировать длительное нажатие мышью.prevent: true обеспечивает корректное поведение на
мобильных браузерах, где удержание обычно вызывает всплывающее
меню.interval для автоповтора только при
необходимости, так как частый вызов обработчика может создавать
нагрузку.v-touch-hold — мощный инструмент Quasar для работы с длительными нажатиями. Его гибкость и настраиваемость делают возможным создание как простых интерактивных элементов, так и сложных компонентов с повторяющимися действиями, разным поведением при коротком и длинном нажатии, а также адаптацию под мобильные и десктопные устройства.