Redux传奇收到功能不是对象作为操作

时间:2019-05-10 13:53:05

标签: javascript redux redux-saga

我正在转换我的一些代码以使用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);

重新排列传奇和重击到以下内容解决了我的问题:

composeEnhancers(applyMiddleware(thunk, sagaMiddleware))

1 个答案:

答案 0 :(得分:0)

重新排序中间件可解决此问题,最初看起来像这样:

composeEnhancers(applyMiddleware(sagaMiddleware, thunk))

放置笨拙的东西首先解决了这个问题:

composeEnhancers(applyMiddleware(thunk, sagaMiddleware))