Есть много способов для достижения этой цели, в том числе тот, который вы упомянули - это хорошо, 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.Это будет полезно, если вы когда-нибудь загрузите свои данные из других мест, чем из саг.