我何时以及为什么要在Redux中结合Reduce?

时间:2017-08-03 03:59:17

标签: reactjs redux react-redux

我观看了一些关于减速器的视频,他们都声称我应该只使用一个减速器并说明我的整个项目,我应该将每个减速器组合成一个大减速器。

现在我的问题是,我为什么要这样做?想象一下,我有一个很大的应用程序,我将所有减速器组合在一起。由于我们需要检查每个减速器切片,因此我的组合减速器将是巨大的并且单个状态更改将花费很长时间。

我真的应该只为一个更大的项目使用一台减速机吗?我们为什么要将它们组合起来,而不是创建多个商店,以及性能如何?

  

随着您的应用变得越来越复杂,您需要分配缩减   功能分成独立的功能,每个功能管理独立的部分   国家。

.combineReducers(...)

非常感谢。

1 个答案:

答案 0 :(得分:2)

根据Redux FAQ entry on the performance of "calling all reducers"

  

重要的是要注意Redux商店实际上只有一个reducer功能。商店将当前状态和调度操作传递给那个reducer函数,并让reducer适当地处理事情。

     

尝试在单个函数中处理每个可能的操作不能很好地扩展,只是在函数大小和可读性方面,因此将实际工作拆分为可由顶级reducer调用的单独函数是有意义的。

     

但是,即使您碰巧有许多不同的减速器功能组合在一起,即使具有深度嵌套状态,减速器速度也不太可能成为问题。 JavaScript引擎能够每秒运行大量的函数调用,并且大多数reducers可能只是使用switch语句并默认返回现有状态以响应大多数操作。

此外,来自the FAQ entry on whether you should create multiple stores

  

可能在页面中创建多个不同的Redux存储,但预期的模式是只有一个存储。拥有一个商店可以使用Redux DevTools,使数据的持久化和再水化更简单,并简化订阅逻辑。

     

但是,创建新商店不应该是您的第一直觉,特别是如果您来自Flux背景。首先尝试减速器组合,如果不能解决您的问题,只能使用多个商店。