首页 > 解决方案 > 如何在 ReactRedux 中使用 combineReducer?并且 combineReducers 的 'sate' 对象到多个 reduce

问题描述

我最近开始研究 react web 开发应用程序,并开始在我的应用程序中使用 react redux saga。所以问题是我创建了两个reducer reducer1reducer2并使用了 combineReducers但状态没有发送回我的Component上的propsToState

注意:如果我使用单个减速器,它工作正常

示例代码:

我的店铺

// create the saga middleware
const sagaMiddleware = createSagaMiddleware();

const rootReducers = combineReducers({reduce1, reducer2})

// create a redux store with our reducer above and middleware
let store = createStore(
  rootReducers,
  compose(applyMiddleware(sagaMiddleware))
);



// run the saga

function* rootSaga () {
  yield all([
      fork(saga1),
      fork(saga2),
  ]);
}

sagaMiddleware.run(rootSaga);

我的减速机

// reducer with initial state
const initialState = {
    p1: false,
    p2: null,
    p3: null
  };

  export function reducer1(state = initialState, action) {
    console.log(state);
    switch (action.type) {
      case ACTION1:
        return { ...state, p1: true, p3: null };
      case ACTION2:
        const lState = { ...state, p1: false, p2: action.data };
        return lState;
      default:
        return state;
    }
  }

注意:并且 reduce2 类似于 reducer1

在我的组件上

const mapStateToProps = state => {
  return {
    loggining: state.loggining,
    user: state.user,
    error: state.error
  };
};

标签: reactjsreduxreact-reduxredux-saga

解决方案


在获取映射到特定减速器的状态时,您缺少应该是减速器名称的键。

const mapStateToProps = state => {
  return {
    loggining: state.reducer1 .loggining, //add key reducer1
    user: state.reducer1 .user,
    error: state.reducer1.error
  };
};

请找到更多details here


推荐阅读