【问题标题】:How to to convert Redux Saga to Observable如何将 Redux Saga 转换为 Observable
【发布时间】: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


    【解决方案1】:

    这就像日食。停下来,想想流动作输入/动作输出,然后再试一次..

    所以,我已经这样做了

    const loadTabs = (action$, state$) => action$.pipe(
      ofType(types.TABS_REQUESTED),
      mergeMap(() => api.fetchTabs()),
      switchMap(tabs => [
        actions.setTabs(tabs),
        actions.selectTab(tabs[0].id),
        actions.loadWidgets(tabs[0].id)
      ])
    )
    
    const loadWidgets = action$ => action$.pipe(
      ofType(types.WIDGETS_REQUESTED),
      mergeMap(() => api.fetchWidgets()),
      switchMap(widgets => [
        actions.setWidgets(widgets),
        actions.setDashboardReady(true)
      ]),
    )
    

    【讨论】:

      猜你喜欢
      • 2018-02-24
      • 2017-02-22
      • 2018-10-23
      • 2021-11-28
      • 1970-01-01
      • 2021-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多