Как убедиться, что данные не загружаются дважды в Redux Saga? - PullRequest
0 голосов
/ 10 июня 2018

Допустим, у меня есть простое приложение React с Redux и Redux-Saga.Я хочу загрузить некоторые данные, но хочу убедиться, что данные НЕ загружаются дважды.Данные будут запрашиваться несколько раз.

Моя наивная реализация заключается в следующем:

function* loadMyData() {
    const isMyDataLoaded = yield select(isMyDataLoadedSelector);
    if (!isMyDataLoaded) {
        yield call(loadMyData);
    }
}

Есть ли лучший способ сделать это?

1 Ответ

0 голосов
/ 10 июня 2018

Есть много способов для достижения этой цели, в том числе тот, который вы упомянули - это хорошо, imo.

Еще один способ сделать это - подождать действие загрузки только один раз:

function * loadMyDataSaga() {
   yield call(loadMyData);
}

function * watcher() {
    yield take(ACTIONS.LOAD_DATA);
    yield fork(loadMyDataSaga);
}

Эффект take, в отличие от takeEvery, будет ожидать действия LOAD_DATA только один раз.Любые последующие отправки LOAD_DATA будут игнорироваться.

Вы могли бы также реализовать некоторый вид кэш-памяти для напоминаний поверх loadMyData помимо слоев redux / redux-saga.Это будет полезно, если вы когда-нибудь загрузите свои данные из других мест, чем из саг.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...