我们应该为每个动作类型创建一个Epic吗?在redux-observable中

时间:2016-11-09 05:36:25

标签: rxjs redux-observable

我正在进行redux-observable学习,我有些疑惑:

我们应该为每个要观看的动作创建一个Epic吗?

export const actionEpic = action $ => action$.ofType('ACTION')
export const action2Epic = action $ => action$.ofType('ACTION2')

或者我们可以为许多人创建它,例如带开关的减速器吗? 导入每一个Epic在中间件中定型是很多工作

1 个答案:

答案 0 :(得分:10)

绝大多数史诗都将通过匹配单个动作开始,例如: action$.ofType(SOMETHING)。这是因为通常这些操作会触发一些特定于单个任务的副作用(如AJAX调用)。

想想取得用户模型的东西。你通常只想听FETCH_USER来开始这个过程,但是同样的史诗可能会听取其他行动来知道何时取消飞行中的请求,或类似的。

如果你在单个史诗中混合副作用问题,比如创建一个同时处理用户和提取用户帖子的问题,你就会开始让你的史诗更难维护和测试。

所有这些都说没有规则。有一些合法(但罕见)的案例,史诗般的听取多种行为来开始一些副作用。例如如果史诗处理一些适用于多个域的通用任务,则记录最明显,但还有其他。

就像减速器一样,多个史诗可以听同样的动作,但是只有当它们之间几乎没有协调时才有意义。