Поставь не обновляющий магазин приставок - PullRequest
0 голосов
/ 13 ноября 2018

Я недавно обновился до 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);
}
...