`combineReducers`-无法理解需求和用法

时间:2018-08-18 09:19:11

标签: reactjs react-redux

我正在使用flux。我用过combineReducers-所有作品。但是在Redux中使用combineReducers的目的是什么?

有人通过更新代码来帮助我理解吗?

  1. 为什么要结合使用减速器?
  2. 如果我不使用,会有什么影响?

这是我的代码:

import { combineReducers } from "redux";
import rootReducer from "./countAddReducer";

export default combineReducers({
  value: rootReducer
});

Live Demo with sample app

2 个答案:

答案 0 :(得分:1)

combineReducers用于将所有化简器组合到一个存储对象中,以便可以在每个组件中使用。

在通量中,您将具有不同的Flux商店来管理不同的状态。在Redux中,只有一个商店,但是CombineReducers可帮助您在化简器之间保持相同的逻辑划分。

在您的示例中,

export default combineReducers({
  value: rootReducer,
  removes: countRemoveReducer
});

您有两个化简器rootReducercountRemoveReducer,并且将这两个make在组件connect()方法中组合为mapStateToProps,其中mapStateToProps有一个状态对象包含这两个减速器。

现在,如果您想在两个化简器之间共享状态,那么我们就无法使用combineReducers来实现它。为此,我们需要redux-thunk

我已经更新了您的代码https://codesandbox.io/s/lq87v947

答案 1 :(得分:0)

将与特定减速器相对应的状态分离为它们自己的对象。

示例:

import { combineReducers } from "redux";
import userReducer from "./userReducer";
import blogPost from "./blogReducer";

export default combineReducers({
  user: userReducer,
  blogPost: blogReducer,
});

当您开始将操作分派到userReducer或blogReducer时,全局redux状态只是一个对象,但是该对象看起来像这样。

const reduxState = {
    user: {
    //state created by userReducer will go in here 
    },
    blogPost: {
        //state created by blogReducer will go in here
    }
}