Я недавно обновился до redux-saga v. 0.16.0, и кажется, что действия, отправляемые сагой через put
, не передаются редуктору немедленно. Таким образом, моя сага делает http запросы слишком много раз. Я прочитал логи и отладка показывает, что положенные действия упакованы и отправлены в кучу, но слишком поздно.
Есть идеи, что я делаю не так?
Вот некоторый псевдокод, который почти такой же, как в производстве.
const shouldFetchApplications = (state, userId) => {
return !state.applications[userId].fetched
&& !state.applications[userId].fetching;
}
export function* fetchApplications(action) {
const userId = action.userId;
const shouldFetch = yield select(shouldFetchApplications, userId);
if (shouldFetch) {
yield put(actions.isFetchingApplications(userId));
try {
const data = yield call(get, `/applications?userId=${userId}`);
yield put(actions.applicationsFetched(data, userId));
} catch (e) {
console.log(e);
yield put(actions.fetchFailed(userId));
}
}
}
function* watchFetchApplications() {
yield takeEvery(actiontypes.FETCH_APPLICATIONS_REQUESTED, fetchApplications);
}
export default function* applicationSagas() {
yield fork(watchFetchApplications);
}