Справочная информация
Моя команда и я работаем над приложением, и у нас возникают некоторые проблемы с синхронизацией жизненных циклов / событий / подписок, которые, как мы подозреваем, связаны с плохимАрхитектура решения, поэтому я публикую сообщения в надежде получить некоторую помощь в решении проблем и дать некоторые рекомендации по общей архитектуре.
Проект довольно прост: для получения документов для пользователей.Мы называем каждый запрос «партией», которая состоит из одного или нескольких «запросов».Каждый запрос может искать разные вещи, такие как диапазон дат, типы документов и т. Д. Пользователи могут искать несколько вещей (несколько запросов) и отправлять их все в одном «пакете».
Макет приложения в основном должен представлять собой «Список партий», где вы можете видеть важные детали каждой партии, а затем, когда вы нажимаете на пакет из списка, открывается что-то, чтобы показать список запросов.связан с партией (в данный момент мы используем модальные для этой цели).Также на странице «Batch List» есть кнопка «New Batch», которая открывает тот же модал, который использовался для просмотра существующего пакета (изначально все пусто, когда они это делают).
Текущий макет приложениявыглядит следующим образом:
- Компонент страницы списка партий
- Компонент списка партий
- Компонент фильтра
- Модальный компонент
- Новый компонент запроса (слева от модального)
- Компонент списка запросов (справа от модального)
При нажатиив пакете из списка пакетов открывается модальный компонент, который отображает новый компонент запроса и компонент списка запросов.
В настоящее время мы пытаемся вывести событие, когда вы щелкаете по пакету из списка пакетов.Компонент, который отправляет «идентификатор пакета» всем слушателям, чтобы они могли искать в базе данных / макете данные для связанного пакета и отображать список запросов в компоненте «Список запросов» в модальном режиме.
Проблема с вышеуказаннымэто тЕсли событие генерируется до того, как Компонент списка запросов создан и может подписаться и прослушать событие.
Вопрос
Неправильно ли расположение / архитектура приложения,или вышеупомянутая проблема ожидается и является лучшей практикой?