在以前使用Redux-Thunk之后,我最近一直在使用Redux-Saga。到目前为止,我很喜欢它用于处理诸如网络请求之类的异步任务。因此,在使用sagas时,我肯定会将带有异步逻辑的代码放入sagas中。但是,我不确定将其余的同步逻辑放在哪里。我正在辩论是否应该将它们留在减速器或动作中,或者也应为它们创建冒险。
让我们使用一个简单的计数器组件,在该组件中,用户正在递增计数编号状态。这个例子是基本的,没有任何异步逻辑,只是用它来演示我的问题。在真实的应用程序中,我会同时具有异步和同步逻辑。
使用Sagas进行同步逻辑:
START_INCREMENT
操作。START_INCREMENT
减速器大小写执行并仅返回旧状态。START_INCREMENT
的传奇运行,并且put
是带有有效负载INCREMENT
的{{1}}动作。incrementNumber
减速器大小写执行并获取当前状态计数,并添加INCREMENT
并返回新状态。使用Reducer处理同步逻辑:
incrementNumber
分派INCREMENT
操作。incrementNumber
减速器大小写执行并获取当前状态计数,并添加INCREMENT
并返回新状态。使用操作来处理同步逻辑:
incrementNumber
作为参数调度INCREMENT
动作创建者。incrementNumber
有效负载的动作INCREMENT
动作。这是更新的计数。count
减速器大小写执行并获取新计数,并替换旧状态下的计数并返回新状态。每种方法对我来说都有好处和缺点。列出一些:
Sagas
优点
缺点
减速器
优点
缺点
动作创建者
优点
缺点
我倾向于将Sagas用于所有异步逻辑,将动作创建者用于所有同步逻辑,然后使减速器保持精简。这种方法有意义吗,还是有更好的方法来处理redux-saga中的同步逻辑?
谢谢!