在反应 – 样板的样本传闻中,传奇被导出为一个数组: export function* defaultSaga() {}export default [ defaultSaga,]; 然后在routes.js中注入默认值: ...injectSagas(sagas.default);... 但是,当我添加一个新的
export function* defaultSaga() { } export default [ defaultSaga, ];
然后在routes.js中注入默认值:
... injectSagas(sagas.default); ...
但是,当我添加一个新的身份验证路由时,我收到一个错误,说saga参数必须是Generator函数!即使我只有默认的传奇(与上面相同).
我添加了到routes.js的路由:
//routes.js export function authRoutes(store) { //same code as createRoutes }
并导入该函数为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:预期“sagas”是一个生成器函数数组.所以我所做的是将sagas.default包装在数组中的新路径中:
//routes.js - authRoutes(store) importModules.then(([reducer, sagas, component]) => { injectReducer('login', reducer.default); injectSagas([sagas.default]); renderRoute(component); });
为什么我会收到这些错误,我该如何解决? (我对React和Generators很新.)
哎呦.我忘了我在store.js中调用了store.runSaga(mySagas),当时我正在测试它接受一组生成器函数.我删除了它,错误消失了.