【问题标题】:Redux with multiple reducers, forcing every dispatched action to go to its reducer带有多个 reducer 的 Redux,强制每个调度的 action 去它的 reducer
【发布时间】:2017-05-23 06:47:26
【问题描述】:

我将 react + redux 与多个减速器一起使用。
我发现每个调度的动作都会经过每个减速器,尽管这个动作只有一个相关的减速器。

是否有一个选项可以强制每个调度的动作只去它的减速器?
如果不是 - 为什么?我肯定误会了什么。

【问题讨论】:

标签: redux react-redux


【解决方案1】:

我没有足够的分数来标记它,但这看起来像是重复的,请参阅:

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。

【讨论】:

    【解决方案2】:

    根据Redux FAQ entry on "calling all reducers",您实际上只有 一个 根减速器功能。 如果您使用内置的 combineReducers 函数生成了根减速器,那么是的,它将始终运行您为每个调度的操作提供的所有切片减速器,因为这就是 combineReducers有效。

    如果您想要其他行为,您可以为您的特定用例编写自己的 reducer 逻辑。有关组织 reducer 逻辑的各种方法的更多信息,请参阅Redux docs section on "Structuring Reducers"。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-16
      • 2021-05-05
      • 2017-10-02
      • 1970-01-01
      • 2019-05-16
      • 2022-01-13
      • 2019-06-20
      相关资源
      最近更新 更多