使用redux合并器正在创建嵌套状态

使用redux合并器正在创建嵌套状态,redux,Redux,当我直接使用redux reducer时,我得到了预期的状态: import cheese from 'reducers/cheese.js'; const store = createStore( cheese ); <Provider store={ store } > ... </Provider> 但是当我使用combineReducer时,我得到一个嵌套状态 import cheese from 'reducers/cheese.js'; impor

当我直接使用redux reducer时,我得到了预期的状态:

import cheese from 'reducers/cheese.js';

const store = createStore( cheese );

<Provider store={ store } >
   ...
</Provider>
但是当我使用
combineReducer
时,我得到一个嵌套状态

import cheese from 'reducers/cheese.js';
import crackers from 'reducers/crackers.js';

const reducer = combineReducers({ cheese, crackers });

const store = createStore( reducer );

<Provider store={ store } >
  ...
</Provider>
这会导致浅层状态比较验证,并且我的组件不会更新。(编辑:此假设可能是错误的)

编辑:

我希望的状态如下所示(这是使用单个减速器时的状态):

编辑:

我的减速器如下所示(两者相同):


combinereducer
接收对象-尝试:

const reducer = combineReducers({ cheese, crackers });

谢谢,你说得对,它确实需要一个物体。我从live project复制代码时出错,在live project中我确实传递了一个对象,因此不幸的是,这不是问题所在。这是
combineReducers
的目标,因此我不确定您的问题是什么,因为它的行为符合预期。您的
cheese
reducer似乎返回的是一个对象而不是一个值。您希望在您将cheese和crackers组合在一起后,状态如何?你能编辑你的问题并提供你期望的结果吗?我编辑了问题-谢谢!然后,您的cheese reducer必须只返回标量
“cheddar”
,而不是对象
{cheese:“cheddar”}
cheese: { cheese: "cheddar" }
{
cheese: "cheddar",
crackers: "ritz"
}
const initialState = {
  cheese: 'cheddar'
};

export default function reducer( state = initialState, action = {} ) {
  switch ( action.type ) {
    case 'newCheese':
      console.log(action.newCheese); // "cheddar"
      return {
        ...state,
        cheese: action.newCheese 
      };
  default:
    return state;
  }
}
const reducer = combineReducers({ cheese, crackers });