Shepherd.js предоставляет гибкий механизм создания интерактивных
туров по интерфейсу, где каждый шаг (step) определяется
объектом с набором параметров: заголовком, текстом, прикрепляемым
элементом, кнопками и условиями отображения. Управление шагами включает
их добавление, изменение и удаление. Рассмотрим подробно процесс
удаления шагов.
В Shepherd.js шаги добавляются с помощью метода
tour.addStep(). Для удаления шагов используются следующие
подходы:
Каждому шагу можно присвоить уникальное имя при создании:
const tour = new Shepherd.Tour({ defaultStepOptions: { scrollTo: true } });
tour.addStep({
id: 'step1',
text: 'Первый шаг тура',
attachTo: { element: '.button', on: 'bottom' }
});
tour.addStep({
id: 'step2',
text: 'Второй шаг тура',
attachTo: { element: '.input', on: 'top' }
});
Для удаления шага используется метод
tour.removeStep(id). Он принимает строку с идентификатором
шага:
tour.removeStep('step1');
После вызова этого метода шаг с id='step1' будет
полностью удалён из коллекции шагов тура и не появится при запуске
tour.start().
Если необходимо удалить шаг, который в данный момент отображается,
можно сначала получить текущий шаг через
tour.getCurrentStep(), затем удалить его:
const currentStep = tour.getCurrentStep();
if (currentStep) {
tour.removeStep(currentStep.id);
}
Важно: после удаления текущего шага тур продолжит выполнение, но
необходимо учитывать, что метод next() или
back() может вести к удалённым шагам, если не обновить
последовательность шагов.
Иногда требуется полностью очистить тур от всех шагов, например, при динамическом формировании контента:
tour.steps.forEach(step => {
tour.removeStep(step.id);
});
После такой очистки tour.steps будет пустым массивом, и
tour.start() не вызовет ни одного шага.
Удаление шагов может изменить логику маршрута. При удалении:
show,
hide, complete) не вызываются для удалённых
шагов, что следует учитывать при логике пользовательских действий.if (tour.getById(id)).next() и back() с осторожностью.// Удаление шага по условию
tour.steps.forEach(step => {
if (step.id.startsWith('temp')) {
tour.removeStep(step.id);
}
});
// Удаление текущего шага и переход к следующему
const current = tour.getCurrentStep();
if (current) {
const nextStepId = tour.steps[tour.steps.indexOf(current) + 1]?.id;
tour.removeStep(current.id);
if (nextStepId) {
tour.show(nextStepId);
}
}
Такой подход позволяет динамически корректировать тур, удаляя ненужные шаги и управляя переходами без ошибок.
Удаление шагов — ключевой инструмент для создания динамичных, адаптивных туров в Shepherd.js. Он обеспечивает контроль над последовательностью и позволяет управлять отображением интерактивных элементов интерфейса в зависимости от условий выполнения.