Shepherd.js предоставляет гибкий API для создания интерактивных пользовательских гидов, где каждая подсказка (tour step) может сопровождаться собственными событиями. Управление порядком выполнения этих событий является ключевым аспектом для построения логичных и плавных сценариев взаимодействия.
Каждый шаг тура в Shepherd.js может генерировать набор событий. Основные из них:
show — вызывается при отображении
шага.hide — срабатывает при скрытии
шага.complete — возникает при завершении
шага или всего тура.cancel — вызывается, если тур был
прерван.События позволяют добавлять кастомную логику, например, запуск анимации, изменение состояния приложения или динамическое изменение следующего шага.
Понимание последовательности срабатывания событий критично для корректного построения гида:
tour.start() происходят подготовительные процессы и события
для первого шага.show.
Любые действия внутри этого обработчика выполняются до
того, как пользователь увидит подсказку.Next, Back и кастомные действия могут вызвать
переход к следующему шагу.hide
выполняется после того, как текущий шаг будет скрыт из DOM.complete. При досрочном завершении срабатывает
cancel.Shepherd.js поддерживает асинхронные функции в обработчиках событий. Это позволяет корректно управлять действиями, которые требуют ожидания:
tour.addStep({
id: 'async-step',
text: 'Подождите перед продолжением...',
buttons: [
{
text: 'Далее',
action: async () => {
await fetchData();
tour.next();
}
}
]
});
В этом примере tour.next() будет вызван только после
завершения асинхронной операции fetchData(), обеспечивая
правильный порядок действий.
Для создания сложных сценариев часто требуется, чтобы события одного шага влияли на последующие шаги:
Передача данных через объект tour
или глобальный контекст:
tour.on('show', (event) => {
tour.userData = { stepShown: event.step.id };
});
tour.addStep({
id: 'next-step',
text: () => `Предыдущий шаг: ${tour.userData.stepShown}`
});Условная логика перехода: можно пропускать или изменять шаги в зависимости от состояния приложения.
Нарушение порядка событий может привести к некорректной работе интерфейса: всплывающие подсказки будут отображаться в неправильном порядке, данные могут не успевать обновляться. Для обеспечения синхронизации:
async/await в обработчиках действий и
событий.tour.show().Shepherd.js предоставляет встроенные методы для управления шагами:
tour.next() — переход к следующему
шагу.tour.back() — возврат к предыдущему
шагу.tour.cancel() — завершение тура
досрочно.tour.show(id) — отображение
конкретного шага по идентификатору.Использование этих методов совместно с событиями show и
hide позволяет создавать полностью детерминированные
последовательности действий.
steps при инициализации тура.Корректное управление порядком выполнения событий в Shepherd.js обеспечивает плавность пользовательских гидов и предотвращает неожиданные баги при динамическом взаимодействии с интерфейсом.