Как соединить части Redux приложения

127
27 декабря 2019, 19:30

Пытаюсь сделать модульную структуру приложения с использованием React + Redux, где отдельные модули будут лежать в своих репозиториях (например, модули application, admin, account etc.). Реализация сейчас следующая:

index.js

import { Application } from 'application-module';
import { ModuleAdmin } from 'admin-panel';
const app = new Application();
const moduleAdmin = new ModuleAdmin(app);
[app, moduleAdmin].forEach(element => {
  element.start();
});

В модуле application-module в методе start() происходит инициализация React приложения и добавление необходимых роутингов:

application-module

start() {
    this.store = this.configureStore({});
    const AppComponent = () => (
      <Provider store={this.store}>
        <Router>
          <Switch>
            {this.routes.map((route: any, i: number) => (
              <Route key={i} path={route.path} component={route.component} />
            ))}
          </Switch>
        </Router>
      </Provider>
    );
    ReactDOM.render(<AppComponent />, document.getElementById('root'));
    serviceWorker.unregister();
  }

Модуль admin-panel - админка (ООП оболочка над умным компонентом с публичными методами для взаимодействия с другими модулями)

constructor(app: IApp) {
    this.component = withProps({ admin: this })(AdminPanel);
    this.app = app;
    this.routes = [
      {
        path: '/admin',
        component: this.component
      }
    ];
    this.app.addReducer(this.reducer);
    this.routes.forEach(route =>
      this.app.addRoute(route.path, route.component)
    );
  }

При попытке все это запустить вылетает ошибка:

Could not find "store" in the context of "Connect(withHandlers(lifecycle(Component)))". Either wrap the root component in a , or pass a custom React context provider to and the corresponding React context consumer to Connect(withHandlers(lifecycle(Component))) in connect options.

Очевидно, админка не видит store, который лежит в модуле application-module, но как это поправить - непонятно. Есть ли какой-то способ?

READ ALSO
Как реализовать задержку timeout в Express.js при оброботке запроса?

Как реализовать задержку timeout в Express.js при оброботке запроса?

У меня есть функция оброботки пост запроса внутри которой я тестирую валидность 2 mail аккаунтов с помощью библиотеки emailjs-imap-client , подключаясь...

136