使用redux合并器正在创建嵌套状态
当我直接使用redux reducer时,我得到了预期的状态:使用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
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 });