我正在将我的一些代码转换为使用redux-saga(我以前只是redux-thunk,但现在并排运行它们)并已以该示例为基础。
我遇到的唯一问题是使用以下函数作为参数,takeEvery有时可以按预期工作,但有时会中断,因为它接收的是函数而不是操作对象。
const requestAction = action => action.type.includes('REQUEST');
function* watchAuthenticationStatus() {
yield takeEvery(requestAction, ensureAuthenticated);
}
从内部注销操作requestAction向我显示,很多时候我的操作作为预期的对象通过,例如
{ type: "data/FETCH_REQUEST", data: Array(1) }
但是,我也看到很多这类事情:
ƒ (_x) {
return _ref.apply(this, arguments);
}
ƒ (_x2, _x3) {
return _ref3.apply(this, arguments);
}
我暂时通过检查是否action.type存在来解决这个问题,但是有人能解释为什么我有时会看到这些匿名函数吗?
编辑
按照下面的要求,我检查了中间件的顺序,最初是这样的:
const sagaMiddleware = createSagaMiddleware();
const store = createStore(
rootReducer,
composeEnhancers(applyMiddleware(sagaMiddleware, thunk))
);
sagaMiddleware.run(rootSaga);
重新排列传奇和重击到以下内容解决了我的问题:
composeEnhancers(applyMiddleware(thunk, sagaMiddleware))
叮当猫咪
相关分类