Цель
Я ищу React-Redux-совместимый способ действия или события в одной части большого модульного приложения для запуска логики в другой, слабо связанной части приложения.Что-то вроде системы Pub-Sub, совместимой с React, Redux и Redux Code Splitting .
Сценарий
- У меня есть веб-приложение React + Redux, которое использует разбиение кода для отложенной загрузки нескольких пакетов во время выполнения.Пакеты содержат код для: пользовательского интерфейса, действий Redux, Redux-Thunks и Redux Reducers
- Модуль Core имеет некоторую логику, которая позволяет пользователю создавать заметки, вводя текст в поле и нажимая кнопку
- Я бы хотел, чтобы динамически загружаемые пакеты могли запускать пользовательскую логику при создании новых заметок.Это может включать побочные эффекты.Компонент пользовательского интерфейса может отображаться или отображаться на экране при создании заметок
Проблема
Как правило, в тесно связанных модулях создается создатель действий с избыточным потоком.(или аналогичный) может вызываться из модуля Core, чтобы инициировать побочные эффекты и отправлять связанные действия Redux по мере необходимости.Однако в случае динамически загружаемых пакетов ссылки на создателей избыточных действий недоступны.
Требования
- Необходимо избегать прямых ссылок от модуля Core до динамических пакетов, чтобы не нарушать разбиение кода
- Должен поддерживать "побочные эффекты", такие вызовы API, в получателе события
- Должен позволить динамически загружаемой логике пакета отвечать, даже когда соответствующие компоненты пользовательского интерфейса в данный момент не отображаются
Идеи
- Observables : Одна из идей заключается в использовании паттерна pub-sub с Observables, аналогичного описанному в этой статье .Тем не менее, я обеспокоен тем, что это может нарушить некоторые рекомендации React-Redux, нарушить «путешествия во времени» в инструментах разработчика Redux и привести к трудностям в обнаружении ошибок ... или, возможно, это не так.С шаблоном React-Redux я не уверен, какие побочные эффекты в порядке, и когда.
- Redux Middleware : напишите какое-нибудь пользовательское промежуточное ПО Redux для поиска «Widget Creation»действия, а затем вызвать дополнительное поведение.Это похоже на изобретение колеса.
Я не большой поклонник ни одного из вышеперечисленных.Похоже, что есть гораздо более простой вариант, который мне не хватает
Спасибо за любую помощь