GuidedTour.tsx

Обзор

GuidedTour.tsx — это React-компонент, реализующий интерактивный пошаговый гид (тур) для пользователей приложения. Его основное назначение — провести пользователя через ключевые элементы интерфейса с подсказками, выделить важные области, и предоставить контекстно-зависимые советы и инструкции. Компонент поддерживает несколько «персон» (типов пользователей), для каждой из которых предусмотрен свой набор шагов и рекомендации.

Функциональность включает:


Классы и типы

Интерфейс TourStep

Определяет структуру одного шага тура.

Поле

Тип

Описание

id

string

Уникальный идентификатор шага.

target

string

CSS-селектор элемента, к которому будет привязана подсказка.

title

string

Заголовок подсказки.

content

string

Основной текст подсказки.

position

`'top'

'bottom'

action?

string (необязательно)

Текст действия, которое рекомендуется выполнить на этом шаге.

highlight?

boolean (необязательно)

Флаг, указывающий, нужно ли выделять целевой элемент визуально.


Интерфейс GuidedTourProps

Пропсы компонента GuidedTour.

Поле

Тип

Описание

steps

TourStep[]

Массив шагов тура, описывающих последовательность подсказок.

isActive

boolean

Флаг активности тура (отображается ли тур в данный момент).

onComplete

() => void

Коллбэк, вызываемый при успешном завершении тура.

onSkip

() => void

Коллбэк, вызываемый при пропуске тура пользователем.

persona

string

Тип пользователя/персоны (например, "casual_gamer", "power_user", "validator").


Компонент GuidedTour

Описание

Основной React-функциональный компонент, который управляет отображением и поведением пошагового гида.

Внутреннее состояние

Основные методы и функции

updateTooltipPosition()

highlightElement(element: Element)

nextStep()

prevStep()

completeTour()

skipTour()


Жизненный цикл и эффекты


Рендеринг


Пример использования

import GuidedTour, { tourSteps } from './GuidedTour';

function App() {
  const [tourActive, setTourActive] = React.useState(true);

  const handleComplete = () => {
    console.log('Тур завершён');
    setTourActive(false);
  };

  const handleSkip = () => {
    console.log('Тур пропущен');
    setTourActive(false);
  };

  return (
    <div>
      <GuidedTour
        steps={tourSteps.casual_gamer}
        isActive={tourActive}
        onComplete={handleComplete}
        onSkip={handleSkip}
        persona="casual_gamer"
      />
      {/* остальная часть приложения */}
    </div>
  );
}

Важные детали реализации


Взаимодействие с другими частями системы


Наборы шагов тура для разных персон

Экспортируется объект tourSteps с предопределёнными наборами шагов для трёх типов пользователей:

Каждый набор содержит 4-6 шагов с выделением и действиями.


Mermaid-диаграмма структуры компонента

classDiagram
    class GuidedTour {
        -currentStep: number
        -tooltipPosition: { x: number, y: number }
        -isVisible: boolean
        -tooltipRef: RefObject<HTMLDivElement>
        -overlayRef: RefObject<HTMLDivElement>
        +GuidedTour(props: GuidedTourProps)
        +updateTooltipPosition(): void
        +highlightElement(element: Element): void
        +nextStep(): void
        +prevStep(): void
        +completeTour(): void
        +skipTour(): void
        +render(): JSX.Element | null
    }

    class TourStep {
        +id: string
        +target: string
        +title: string
        +content: string
        +position: 'top' | 'bottom' | 'left' | 'right'
        +action?: string
        +highlight?: boolean
    }

    class GuidedTourProps {
        +steps: TourStep[]
        +isActive: boolean
        +onComplete: () => void
        +onSkip: () => void
        +persona: string
    }

    GuidedTour ..> GuidedTourProps
    GuidedTourProps ..> TourStep

Итог

GuidedTour.tsx — это мощный и гибкий компонент для организации интерактивных обучающих туров в React-приложениях. Его адаптивность под разные типы пользователей и динамическое позиционирование подсказок делают его удобным инструментом для улучшения пользовательского опыта при знакомстве с функционалом.