有没有办法使用多个redux-sagas而不在rootSaga中创建一个巨大的数组?

时间:2016-12-14 03:24:04

标签: reactjs redux redux-saga

目前,我的申请中有20多条路线。这些路由中的每一个都有多个API调用,所以我打算使用redux-saga来进行AJAX调用。

通过阅读文档,看起来我能够做到以下几点:

  1. 每条路线都拥有它自己的" root"传奇,本身就产生了多种传奇。
  2. 此路线特定的传奇将被导出到实际的主根传奇,然后传递给createSagaMiddleware.run()
  3. 所以它看起来像这样:

    export function* screen1Saga() {
        yield [ ... ]; // different sub-sagas for screen1 route
    }
    

    然后在主传奇文件中,执行以下操作:

    import { screen1Saga } from './screen1/sagas';
    
    export function* rootSaga() {
        yield [ screen1Saga(), ... ]; // array of route-specific sagas
    }  
    

    我相信这应该完美无缺。但我担心在制作20多种特定路线的传奇时它会是怎样的。在根传奇中,它只是一大堆传奇。

    有可能以其他方式做到这一点吗?优选地,路线特定的传奇被封装在其相应的文件夹中,而不需要将其一直输出到应用结构的顶部?

    只是好奇地看到其他人如何处理大量的传奇故事。

1 个答案:

答案 0 :(得分:1)

React-Boilerplate repo是扩展React应用程序的一些方法的一个很好的例子。他们使用名为asyncInjectors的实用程序文件,它实际上只是通过调用引擎盖下的sagaMiddleware.run(saga)来委派添加传奇的工作。