动态加载Sagas以在Redux应用程序中进行代码拆分

时间:2019-01-02 12:01:48

标签: reactjs redux redux-saga

我正在尝试将redux-saga集成到我的react应用程序中。我目前正在通过在达到正确路线时使用replaceReducer动态注入来分解化简器的代码。我正在添加代码段。

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

我想对sagas进行同样的操作,但无法找到动态注入传奇的方法。

1 个答案:

答案 0 :(得分:0)

我试图像下面那样实现它,它似乎可以工作。

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);
});