我正在通过创建一个应用程序来学习React和Redux,该应用程序包含一系列基于时间的数据:允许的时间和经过的时间。
[1] : {
time: 10,
elapsed: 0
},
[2] : {
time: 15,
elapsed: 0
},
[3] : {
time: 20,
elapsed: 0
}
如果有任何项目超出了计划,我想重新计算后续项目的时间。例如。项目1允许10秒,但是如果项目1需要12秒,我想用项目2和3弥补这段时间。
[1] : {
time: 10,
elapsed: 12
},
[2] : {
time: 14,
elapsed: 0
},
[3] : {
time: 19,
elapsed: 0
}
我应该在哪里执行此计算?我觉得最简单的方法是减速器,但我也认为减速器应该尽可能简单?正确吗?
那么计算应该在动作创建者中进行,然后将新的商品数组传递到商店吗?
答案 0 :(得分:2)
引用原始Redux Documentation。
对于简化器或动作创建器应采用哪些逻辑,尚无一个明确的答案。一些开发人员更喜欢使用“胖”动作创建者,并使用“瘦身”简化器将动作中的数据简单地盲目合并为相应的状态。其他人则试图强调使动作尽可能的小,并最小化动作创建者中getState()的使用。 (出于这个问题的目的,其他异步方法,例如sagas和observables都属于“动作创建者”类别。)
将更多的逻辑放入化简器有一些潜在的好处。动作类型可能更具语义和意义(例如,“ USER_UPDATED”而不是“ SET_STATE”)。另外,在reducer中具有更多的逻辑意味着更多的功能将受到时间旅行调试的影响。
答案 1 :(得分:1)
IMO这应该在减速器中完成。
动作不应该知道分派动作的效果是什么,减速器是负责将新状态作为分派动作的效果返回的人。
答案 2 :(得分:-1)
您可以将middleware用于此目的。