Redux 有条件地分派副作用

Redux 有条件地分派副作用,redux,redux-observable,Redux,Redux Observable,假设我有一个搜索组件,它根据用户选择的标签进行搜索。如果用户取消选择所有标签,我知道搜索结果将为空;没有必要点击服务器。我如何重构这部史诗以有条件地运行副作用 const removeTagEpic = (action$: any, store: any) => action$ .ofType(types.REMOVE_SELECTED_TAG) .map((action: any) => action.payload) .mergeMap((tag:

假设我有一个搜索组件,它根据用户选择的标签进行搜索。如果用户取消选择所有标签,我知道搜索结果将为空;没有必要点击服务器。我如何重构这部史诗以有条件地运行副作用

const removeTagEpic = (action$: any, store: any) => 
  action$
    .ofType(types.REMOVE_SELECTED_TAG)
    .map((action: any) => action.payload)
    .mergeMap((tag: any) => {
      //only do this is store.getState().tags > 0
      ajax.getJSON(`https://api.github.com/users/dwaynelavon`)
        .flatMap(response => 
          Observable.concat(
            Observable.of(actions.fetchingProfiles(true)),
            Observable.of(actions.fetchProfilesFulfilled(profiles)),
            Observable.of(actions.fetchingProfiles(false))
          )
        )
    })
你不能用过滤器操作符检查里面的标签吗

const removeTagEpic = (action$: any, store: any) => 
  action$
    .ofType(types.REMOVE_SELECTED_TAG)
    .filter(_ => store.getState().tags > 0)
    .map((action: any) => action.payload)
    .mergeMap((tag: any) => {
      ajax.getJSON(`https://api.github.com/users/dwaynelavon`)
        .flatMap(response => 
          Observable.concat(
            Observable.of(actions.fetchingProfiles(true)),
            Observable.of(actions.fetchProfilesFulfilled(profiles)),
            Observable.of(actions.fetchingProfiles(false))
          )
        )
    })
如果不满足条件,则不会发出types.REMOVE_SELECTED_标记的源


谢谢,我在你回答之前就想好了哈哈