【发布时间】:2017-05-23 06:47:26
【问题描述】:
我将 react + redux 与多个减速器一起使用。
我发现每个调度的动作都会经过每个减速器,尽管这个动作只有一个相关的减速器。
是否有一个选项可以强制每个调度的动作只去它的减速器?
如果不是 - 为什么?我肯定误会了什么。
【问题讨论】:
标签: redux react-redux
我将 react + redux 与多个减速器一起使用。
我发现每个调度的动作都会经过每个减速器,尽管这个动作只有一个相关的减速器。
是否有一个选项可以强制每个调度的动作只去它的减速器?
如果不是 - 为什么?我肯定误会了什么。
【问题讨论】:
标签: redux react-redux
我没有足够的分数来标记它,但这看起来像是重复的,请参阅:
Why a dispatch to a reducer causes all reducers get called?
All reducers will be invoked when an action is dispatched?
简短的回答r:这是正常的和有意的,没有这样的选项可以阻止它,因为当你有一个复杂的状态树时,你不应该关心计算和检查需要什么手动更改,这是 redux 的作用,除非你有一个巨大的应用程序,否则性能不会成为问题(reducer 通常只是简单的多行纯函数)。
如果您担心性能,请查看另一个问题中提到的https://github.com/reactjs/reselect。
【讨论】:
根据Redux FAQ entry on "calling all reducers",您实际上只有 一个 根减速器功能。 如果您使用内置的 combineReducers 函数生成了根减速器,那么是的,它将始终运行您为每个调度的操作提供的所有切片减速器,因为这就是 combineReducers有效。
如果您想要其他行为,您可以为您的特定用例编写自己的 reducer 逻辑。有关组织 reducer 逻辑的各种方法的更多信息,请参阅Redux docs section on "Structuring Reducers"。
【讨论】: