在Reduce或Action-Creator中反应Redux存储计算?

时间:2018-09-17 07:39:58

标签: reactjs redux react-redux

我正在通过创建一个应用程序来学习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
}

我应该在哪里执行此计算?我觉得最简单的方法是减速器,但我也认为减速器应该尽可能简单?正确吗?

那么计算应该在动作创建者中进行,然后将新的商品数组传递到商店吗?

3 个答案:

答案 0 :(得分:2)

引用原始Redux Documentation

  

对于简化器或动作创建器应采用哪些逻辑,尚无一个明确的答案。一些开发人员更喜欢使用“胖”动作创建者,并使用“瘦身”简化器将动作中的数据简单地盲目合并为相应的状态。其他人则试图强调使动作尽可能的小,并最小化动作创建者中getState()的使用。 (出于这个问题的目的,其他异步方法,例如sagas和observables都属于“动作创建者”类别。)

     

将更多的逻辑放入化简器有一些潜在的好处。动作类型可能更具语义和意义(例如,“ USER_UPDATED”而不是“ SET_STATE”)。另外,在reducer中具有更多的逻辑意味着更多的功能将受到时间旅行调试的影响。

答案 1 :(得分:1)

IMO这应该在减速器中完成。

动作不应该知道分派动作的效果是什么,减速器是负责将新状态作为分派动作的效果返回的人。

答案 2 :(得分:-1)

您可以将middleware用于此目的。