Redux-saga - 选择/等待来自其他多种传奇的数据

时间:2018-06-03 12:58:44

标签: javascript reactjs redux react-redux redux-saga

我正在寻找一种更好的选择模式等待其他几个传奇的数据。

挑战:

  • 从多个来源加载数据
  • 加载的数据需要可用于应用的许多不同部分
  • 异步不确定的数据加载流程

这是我目前用于加载数据源的实现,以便在我的传奇中使用:

/** 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行代码,但我还是找不到它。

0 个答案:

没有答案