我正在寻找一种更好的选择模式等待其他几个传奇的数据。
挑战:
这是我目前用于加载数据源的实现,以便在我的传奇中使用:
/** 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行代码,但我还是找不到它。