【问题标题】:Should the order arrangement of reducers in combineReducers matter when building a redux app?在构建 redux 应用程序时,combineReducers 中 reducer 的顺序排列是否重要?
【发布时间】:2019-04-25 12:26:31
【问题描述】:

在构建 redux 应用程序时,找到传递给 combineReducers 对象的 reducer 之间的依赖关系是否正确?更详细地说,如果我有两个减速器处理状态的不同部分但都在听相同的动作,那么安排减速器是否正确(或可能)以便在 R2 之前处理 R1?或者这是否表明可能存在设计缺陷?

【问题讨论】:

    标签: redux react-redux


    【解决方案1】:

    在构建 redux 应用时,combineReducers 中 reducer 的顺序排列是否重要?

    没有。 combineReducers() 基本上只是一个映射而不是一个有序列表。

    是否正确(或可能)安排减速器以便在 R2 之前处理 R1?或者这是否表明可能存在设计缺陷?

    reducer 之间根本不应该有任何依赖关系。如果存在依赖关系,那将是设计缺陷。

    Reducer 只关心根据操作更新整个 state 对象的唯一部分或切片。

    如果您想要顺序更新状态,请检查 或让组件顺序调度两个单独的操作。

    【讨论】:

      【解决方案2】:

      就我一直在编写 reducer 而言,它们在 combineReducers() 调用中的顺序排列并不重要。

      你可以有这样的东西:

      import { combineReducers } from "redux";
      import { reducer as formReducer } from "redux-form";
      import authReducer from "./authReducer";
      
      export default combineReducers({
        auth: authReducer,
        form: formReducer
      });
      

      请注意,我有一个来自 Redux Form 的 formReducer,它不是您可以在 reducers/ 文件夹中手动写出的减速器,但带有 Redux Form 库,并且还注意到我首先导入了 formReducer,但我分配了它combineReducers 对象内的第二名,所以不,不需要顺序。

      【讨论】:

      • 谢谢!我们遇到的问题有点抽象,在我们的状态中有某个部分发生了突变,我们没有注意到,并且在更改 combineReducers 中的顺序时产生了一个错误,一旦注意到并修复了顺序没有没关系。
      • @DinaNashaat,根据您分享的内容,这听起来与特定 reducer 的编写方式有关,导致状态突变,我很高兴听到它已解决。跨度>
      猜你喜欢
      • 1970-01-01
      • 2019-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-05
      • 2011-06-02
      • 2017-05-21
      相关资源
      最近更新 更多