Redux 传奇接收功能而不是对象作为操作
Redux saga receives function not object as action
我正在将我的一些代码转换为使用 redux-saga(我以前只有 redux-thunk,但现在 运行 它们并排使用)并且使用了 this example as a basis.
我 运行 遇到的唯一问题是使用以下函数作为 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);
重新排序 saga 和 thunk 解决了我的问题:
composeEnhancers(applyMiddleware(thunk, sagaMiddleware))
Re-ordering 中间件修复了这个问题,原来它是这样的:
composeEnhancers(applyMiddleware(sagaMiddleware, thunk))
首先放置 thunk 解决了问题:
composeEnhancers(applyMiddleware(thunk, sagaMiddleware))
我正在将我的一些代码转换为使用 redux-saga(我以前只有 redux-thunk,但现在 运行 它们并排使用)并且使用了 this example as a basis.
我 运行 遇到的唯一问题是使用以下函数作为 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);
重新排序 saga 和 thunk 解决了我的问题:
composeEnhancers(applyMiddleware(thunk, sagaMiddleware))
Re-ordering 中间件修复了这个问题,原来它是这样的:
composeEnhancers(applyMiddleware(sagaMiddleware, thunk))
首先放置 thunk 解决了问题:
composeEnhancers(applyMiddleware(thunk, sagaMiddleware))