我观看了一些关于减速器的视频,他们都声称我应该只使用一个减速器并说明我的整个项目,我应该将每个减速器组合成一个大减速器。
现在我的问题是,我为什么要这样做?想象一下,我有一个很大的应用程序,我将所有减速器组合在一起。由于我们需要检查每个减速器切片,因此我的组合减速器将是巨大的并且单个状态更改将花费很长时间。
我真的应该只为一个更大的项目使用一台减速机吗?我们为什么要将它们组合起来,而不是创建多个商店,以及性能如何?
随着您的应用变得越来越复杂,您需要分配缩减 功能分成独立的功能,每个功能管理独立的部分 国家。
.combineReducers(...)
非常感谢。
答案 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背景。首先尝试减速器组合,如果不能解决您的问题,只能使用多个商店。