2017-08-03 48 views
0

我观看了一些关于减速器的视频,他们都声称我应该只使用一个减速器并为我的整个项目申明,我应该将每个减速器组合成一个大减速器。何时以及为什么我应该将Reduux in Redux结合起来?

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

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

随着你的应用程序变得更复杂,你要分割你减少 功能分为不同的功能,的 状态管理的每个独立部分。

.combineReducers(...) 

非常感谢。

+1

多个商店? Redux的整个目标是拥有一个单一的全球状态,一个真实的单一起源。 Reduux的组合允许Redux构造状态。 – Li357

+0

噢,好的,非常感谢,安德鲁! - 我们是不是会遇到性能问题如果我们将许多reducer合并到一个root Reducer中?假设我有一个动作需要由一个特定的reducer进行处理,那么我们需要遍历整个bundle,仅用于目标reducer ... – JohannaNoobie

+1

嗯,没有。当你将所有的缩减器组合在一起时,它们全部组合成一个单一的函数来检查所有类型的动作。最糟糕的是,在找到合适的产品之前,必须检查每一个动作。从实际的角度来看,这并不是性能问题,你也不应该担心性能。 – Li357

回答

2

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

需要注意的是一个终极版店里真的只有一个减速功能是非常重要的。商店将当前状态和已分派的操作传递给该减速器功能,并让减速器适当地处理事情。

尝试处理单个函数中的每个可能的操作并不能很好地扩展,仅仅是在函数大小和可读性方面,所以将实际工作分割成可由顶级简化器调用的单独函数是有意义的。但是,即使您碰巧有许多不同的减速机功能组合在一起,甚至在深度嵌套的状态下,减速机速度也不会成为问题。 JavaScript引擎每秒能够运行大量的函数调用,并且大多数reducers可能只是使用switch语句并默认返回现有状态以响应大多数操作。

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

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

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

+0

爱你马克! – JohannaNoobie

相关问题