Redux-saga - выбор / ожидание данных из нескольких других саг - PullRequest
0 голосов
/ 03 июня 2018

Я ищу лучший способ выбора и ожидания данных из нескольких других саг.

Проблемы:

  • загрузка данных из нескольких источников
  • загруженные данные должны быть доступны для множества различных частей приложения
  • асинхронный неопределенный поток загрузки данных

Вот моя текущая реализация для загрузки источников данных для использованияв моей саге:

/** For the purposes of this question:
  * getData returns a selector function (returns a portion of the state)
  * fetchData & setData are actionCreators (returns an action)
*/

function* doSomethingSaga() {
  let foo = yield select(getData('foo'));
  if (!foo.data) {
    if (!foo.loading && !foo.error) {
      yield put(fetchData('foo'));
    }
    foo = yield take('FOO_FETCHING_COMPLETE');
  }

  let bar = yield select(getData('bar'));
  if (!bar.data) {
    if (!bar.loading && !bar.error) {
      yield put(fetchData('bar'));
    }
    bar = yield take('BAR_FETCHING_COMPLETE');
  }

  const fooBar = doSomething(foo.data, bar.data);
  yield put(setData('fooBar', fooBar));
}

export default function* onDoSomething() {
  yield takeEvery('DO_SOMETHING', doSomethingSaga);
}

... должен быть лучший способ, чем добавить 7 строк кода для каждого фрагмента данных, который мне нужно загрузить в сагу, но я не смогнайди его еще.

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