reactjs - 如何在减速器中使用先前的状态属性
问题描述
我想从我的商店增加对象的adult
属性passenger
const store = {
//...
passenger: {
adult: 1,
child: 0
}
///...
}
在我的减速机中,我有
if (action.type === actionTypes.ADD_ADULT) {
return {
...state,
adult: state.passenger.adult + 1
};
}
但是我当然会得到一个错误“Cannot read property 'adult' of undefined”,因为官方 Redux 文档说Redux 将首次调用具有未定义状态的 reducer。有没有办法使用以前的状态,或者我应该只传递一个新值adult
through action.payload
?
PS:我正在使用combineReducers
and preloadedState
,如果它以某种方式影响。
解决方案
您可以创建一个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;
}
}
推荐阅读
- c# - SQL 如何替换一个值
- python - 使用 python 和请求,如何进行正确的 POST 调用以及在哪里找到标头?
- android - FirebaseAppDistribution:appDistributionUpload gradle 命令中缺少应用程序 ID
- mysql - 跨列和行计算值的实例
- javascript - 使用 redux 钩子时使用 redux 操作的最佳选择是什么?
- sql - Impala 2.11:AnalysisException:选择列表中不支持子查询
- swift - 在 SwiftUI 中获取当前的经纬度
- c++ - 是否可以禁止一个类被动态转换为?
- git - Git - 将发布分支合并到主分支
- tensorflow - 任何想法如何解决激活函数的问题?