我想从我的商店中增加adult
对象的passenger
属性
const store = {
//...
passenger: {
adult: 1,
child: 0
}
///...
}
我的减速器中有
if (action.type === actionTypes.ADD_ADULT) {
return {
...state,
adult: state.passenger.adult + 1
};
}
但是我当然会犯一个错误“无法读取未定义的属性'adult'”,因为Redux官方文档说 Redux会首次调用具有未定义状态的reducer 。有没有办法使用以前的状态,还是应该通过adult
传递新的action.payload
值?
P.S .:如果正在使用combineReducers
和preloadedState
,我会使用它。
答案 0 :(得分:3)
您可以创建一个initialState
对象,将其用作状态的默认值,以便state.adult
拥有一个值。
示例
const initialState = {
adult: 0,
child: 0
};
function reducer(state = initialState, action) {
if (action.type === actionTypes.ADD_ADULT) {
return {
...state,
adult: state.adult + 1
};
}
// ...
else {
return state;
}
}