разбор компонента

Страница события

Собирает event context, score, markets и пользовательские действия в один устойчивый экран.

Видимые состояния

каркас страницыкаркас страницы
снимок полученснимок получен
идут обновленияидут обновления
частичная приостановкачастичная приостановка
событие завершенособытие завершено

Иллюстрация по теме

Визуальный ориентир помогает быстрее считать сценарий страницы и не оставлять компонент абстрактным.

Мобильные экраны спортивного продукта с матчем и статистикой
Иллюстрация по теме: event page живёт на пересечении live-данных, контента и пользовательских действий.

Что приходит и что выходит

Inputsevent model, market groups, account-independent shell
Outputsnavigation, selection intents, live context
Failure modecontext jump, dense list overload, mixed freshness
OwnershipUI владеет представлением и recoverable context; финальное бизнес-состояние подтверждает серверный контракт.

Практическая граница

Компонент считается самостоятельной границей только если команда может назвать его входы, выходы и невозможные состояния. Если он требует читать provider-specific поля напрямую или хранит финальный статус операции только локально, граница выбрана слишком поздно.

При изменении контракта сначала обновляется state model и совместимость, затем визуальный слой. Это уменьшает риск ситуации, когда новый UI уже ожидает поле или статус, которого старая версия API не гарантирует.

Связанные разборы

Проверки поведения

  • Счёт и фаза матча остаются видимыми при навигации по длинному списку рынков.
  • Collapsed groups не скрывают выбранную пользователем selection без явного контекста.
  • Partial suspend не превращает всю страницу в недоступный экран.
  • Публичный shell не содержит account-specific данных и допускает edge-cache.
  • Перестройка market ordering не сбрасывает пользовательскую позицию без причины.
  • Loading state резервирует пространство для ключевых блоков и не создаёт крупный CLS.

Почему страница события не владеет всем

Event page рассматривается как композиция нескольких freshness domains: публичный контекст может кэшироваться, live-секции обновляются потоково, а персональные действия читаются отдельно.

При review команда проверяет не название компонента, а его инварианты: какие данные он имеет право считать финальными, что обязан показать при деградации и как возвращается в согласованное состояние после сбоя.

Как компонент ведёт себя во время актуальное

EventPage держит стабильный контекст, пока отдельные области меняются с разной частотой. Обновление счёта не должно сбрасывать раскрытый market group; изменение каталога — переносить focus; персональная selection — делать весь публичный shell приватным для CDN.

При partial degradation страница остаётся читаемой: информационный блок может показать stale с отметкой времени, а интерактивный market перейти в suspend. Это разные состояния и разные обещания пользователю.

См. каталог → страница события.

Когда страница события действительно помогает продукту

Компонент полезен не тогда, когда «вмещает всё про матч», а когда у него есть понятная граница: что он получает как snapshot, что обновляет точечно и какой контекст обязан сохранить при смене данных. В живом продукте это особенно видно на длинной странице с рынками и статистикой. Практическое продолжение темы есть в материалах про плотность event page и точечные обновления live-center.