反应 - 样板传说为新的路线

时间:2017-05-12 07:16:22

标签: reactjs generator react-router-redux redux-saga react-boilerplate

react-boilerplate的样本传奇中,传奇被导出为数组:

export function* defaultSaga() {

}

export default [
  defaultSaga,
];

然后在routes.js

中注入默认值
...
injectSagas(sagas.default);
...

但是,当我添加新的身份验证路径时,即使我只有默认传闻(与上述相同),我也会收到 saga argument must be a Generator function! 错误。

我将路线添加到routes.js

//routes.js
export function authRoutes(store) {
  //same code as createRoutes
}

导入函数为Router中的app.js创建新路线:

//app.js
const rootRoute = {
  component: App,
  childRoutes: createRoutes(store),
};

const authRoute = {
  path: '/auth',
  component: Auth,
  childRoutes: authRoutes(store),
};

const routes = {
  childRoutes: [rootRoute, authRoute],
};

当我尝试将sagas.js的默认值修改为:

export default function* root() {
  yield [
    defaultSaga(),
  ];
}

我收到错误 injectAsyncSagas: Expected "sagas" to be an array of generator functions 。所以我所做的是将sagas.default包装在数组中的新路由中:

//routes.js - authRoutes(store)
importModules.then(([reducer, sagas, component]) => {
  injectReducer('login', reducer.default);
  injectSagas([sagas.default]);
  renderRoute(component);
});

为什么我会收到这些错误,我该如何解决? (我对React和Generators很新。)

1 个答案:

答案 0 :(得分:1)

糟糕。我忘记了,当我测试接受一系列生成器函数时,我在store.runSaga(mySagas)中调用了store.js。我删除了它,错误消失了。