4

在 的示例 sagas 中react-boilerplate,sagas 被导出为一个数组:

export function* defaultSaga() {

}

export default [
  defaultSaga,
];

然后将默认值注入routes.js

...
injectSagas(sagas.default);
...

但是,当我添加一个新的身份验证路由时,我收到一个错误,saga argument must be a Generator function!即使我只有默认的 sagas(与上面相同)。

我将路线添加到routes.js

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

Router并导入了为in创建新路由的函数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 很陌生。)

4

1 回答 1

1

哎呀。我忘记了我在测试它接受一组生成器函数时调用store.runSaga(mySagas)了它。store.js我删除了它,错误消失了。

于 2017-05-15T10:09:04.173 回答