如何在一个 epic 中处理多个 action 类型?这样做有什么缺点吗?

16

对于redux-observables,rxjs和observables都相对较新。我想知道如何在同一个epic中处理另一个动作,比如 'ActionTwo'。

const Epic1 = (action$,store) => {
return action$.ofType('ActionOne')
 .mergeMap((action) => {
      return ajax({'method': 'GET', 'url': 'someUrl')
         .map(response => resultActoin(action.userId, response.response));


       }
  );
 }

类似于某事

const Epic1 = (action$){
   if('ActionOne') make a API call.
   if('ActionTwo') make some other API call.
   else do nothing.

}
1个回答

40

这是同一个API调用吗?如果是的话,ofType()可以接受多种类型。您只需使用action$.ofType('ActionOne', 'ActionTwo')

如果您想向另一个API / URL发出请求,建议创建另一个 epic。您可以使用 combineEpics“合并”所有epic,详情请参见:https://redux-observable.js.org/docs/basics/SettingUpTheMiddleware.html


4
每个任务最好只有一个史诗。 - jayphelps
了解combineEpics,正在尝试在一个epic中处理多个actions。 您能否详细说明为什么拥有每个action的epic是一个好的设计?除了代码可维护性之外还有其他原因吗? - Ajinkya Salve
1
这只涉及可维护性问题。你有多个文件和模块的原因是相同的。它有助于扩展和理解你的应用程序,几乎没有任何不利影响。此外,它使重构更容易,并创建了你的操作流。 - Sebastian Sebald
非常荣幸! :) - Sebastian Sebald

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接