6

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

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

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

或者我们可以为许多带开关的减速器创建它吗?在中间件中导入每一个 Epic 来说服是很多工作

4

1 回答 1

10

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

想想像获取用户模型这样的事情。您通常只想监听FETCH_USER以启动此过程,但当然同一史诗可能会监听其他操作以了解何时取消正在进行的请求或类似的操作。

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

综上所述,没有规则。史诗般的听多个动作来开始一些副作用的合法(但很少)案例。例如,如果史诗处理一些适用于多个域的通用任务,日志记录是最明显的,但还有其他的。

就像 reducer 一样,多个史诗可以监听相同的动作,但是这只有在它们之间几乎不需要协调时才有意义。

于 2016-11-09T19:14:35.283 回答