Я нахожусь в процессе преобразования части моего кода в использование 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
, но может ли кто-нибудь объяснить, почему я иногда вижу эти анонимные функции?
EDIT
Как указано ниже, я проверил порядок промежуточного программного обеспечения, у меня изначально было:
const sagaMiddleware = createSagaMiddleware();
const store = createStore(
rootReducer,
composeEnhancers(applyMiddleware(sagaMiddleware, thunk))
);
sagaMiddleware.run(rootSaga);
Переупорядочивание саги и thunk на следующее решило мою проблему:
composeEnhancers(applyMiddleware(thunk, sagaMiddleware))