【发布时间】:2023-03-14 12:04:02
【问题描述】:
我必须深入研究 Redux-Observable,而我的目标是转换这个 Sagas
function* loadTabs(action) {
const tabs = yield call(api.fetchTabs)
yield put(actions.setTabs(tabs))
const tabId = tabs[0].id
yield put(actions.selectTab(tabId))
yield put(actions.loadWidgets(tabId))
}
function* loadWidgets({ tabId }) {
const widgets = yield call(api.fetchWidgets, tabId)
yield put(actions.setWidgets(widgets))
yield put(actions.setDashboardReady(true))
}
/* WATCHER */
function* mySaga() {
yield takeEvery(types.TABS_REQUESTED, loadTabs)
yield takeEvery(types.WIDGETS_REQUESTED, loadWidgets)
}
进入史诗。我所做的是
const loadTabs = (action$, state$) => action$.pipe(
ofType(types.TABS_REQUESTED),
mergeMap(() => api.fetchTabs()),
map(tabs => actions.setTabs(tabs))
)
const loadWidgets = action$ => action$.pipe(
ofType(types.WIDGETS_REQUESTED),
mergeMap(() => api.fetchTabs()),
map(widgets => actions.setWidgets(widgets)),
)
const rootEpic = combineEpics(loadTabs, loadWidgets)
“调度链”应该是“TABS_REQUESTED > setTabs > selectTab > loadWidgets > setDashboardReady”。我已经停止了 'TABS_REQUESTED > setTabs'
请用漏掉的部分踢我。我现在只是手忙脚乱。谢谢。
【问题讨论】:
标签: redux-saga redux-observable