我正在进行redux-observable学习,我有些疑惑:
我们应该为每个要观看的动作创建一个Epic吗?
export const actionEpic = action $ => action$.ofType('ACTION')
export const action2Epic = action $ => action$.ofType('ACTION2')
或者我们可以为许多人创建它,例如带开关的减速器吗? 导入每一个Epic在中间件中定型是很多工作
答案 0 :(得分:10)
绝大多数史诗都将通过匹配单个动作开始,例如: action$.ofType(SOMETHING)
。这是因为通常这些操作会触发一些特定于单个任务的副作用(如AJAX调用)。
想想取得用户模型的东西。你通常只想听FETCH_USER
来开始这个过程,但是同样的史诗可能会听取其他行动来知道何时取消飞行中的请求,或类似的。
如果你在单个史诗中混合副作用问题,比如创建一个同时处理用户和提取用户帖子的问题,你就会开始让你的史诗更难维护和测试。
所有这些都说没有规则。有一些合法(但罕见)的案例,史诗般的听取多种行为来开始一些副作用。例如如果史诗处理一些适用于多个域的通用任务,则记录最明显,但还有其他。
就像减速器一样,多个史诗可以听同样的动作,但是只有当它们之间几乎没有协调时才有意义。