Динамически загружать саги для разделения кода в приложении Redux - PullRequest
0 голосов
/ 02 января 2019

Я пытаюсь интегрировать redux-сагу в свое приложение реакции. В настоящее время я использую редукторы разделения кода, динамически внедряя их с использованием replaceReducer при попадании на правильный маршрут. Я добавляю фрагмент кода.

reducerRegistry.setChangeListener(reducers => {
    store.replaceReducer(combine(reducers));
});

Я хочу сделать то же самое с сагами, но не могу найти способ динамического внедрения саги.

1 Ответ

0 голосов
/ 02 января 2019

Я попытался реализовать это, как показано ниже, и, похоже, оно работает.

export class SagaRegistry {
  constructor() {
    this._emitChange = null;
    this._sagas = {};
  }

  getSagas() {
    return { ...this._sagas };
  }

  register(name, saga) {
    if (this._sagas[name]) {
      return;
    }
    this._sagas = { ...this._sagas, [name]: saga };
    if (this._emitChange) {
      this._emitChange(saga);
    }
  }

  setChangeListener(listener) {
    this._emitChange = listener;
  }
}

const sagaRegistry = new SagaRegistry();
export default sagaRegistry;

И запустить сагу вот так.

sagaRegistry.setChangeListener(saga => {
  sagaMiddleware.run(saga);
});
...