我在mapStateToProps(state)中已经有多个属性,但是该特定位返回未定义的-disableselectors
return {
token: state.token,
url: state.url,
disableselectors: state.disableselectors
}
这是我的减速器,我已经返回了默认状态(与其他减速器相同)
const initState = "ENABLED";
export default function disableSelectorReducer(state = initState, action){
switch(action.type){
case 'SET_DISABLEDSELECTORS':
return action.disableselectors;
default:
return state;
}
}
当我尝试在组件上访问它时,它将返回未定义的
doUpdate(){
let x = this.props.disableselectors;
}
设置状态和操作的组件
const disableselectors = this.state.disableselectors;
disableselectors.disableSelectorProperty = "DISABLED";
this.setState({disableselectors});
this.props.setDisableSelectors(this.state.disableselectors.disableSelectorProperty);
减速机
const rootReducer = combineReducers({
status,
disableSelectors
})
export default rootReducer;
这有什么问题吗?因为我的其他道具和减速器工作正常
答案 0 :(得分:0)
使用combineReducers
,传入的属性名称成为组合状态下的属性。因为您的combineReducers
如下所示:
const rootReducer = combineReducers({
status,
disableSelectors
})
...状态到道具的映射
return {
token: state.token,
url: state.url,
disableselectors: state.disableselectors
};
...不正确,因为您要查找的状态位于disableSelectors
属性下,而不是disableselectors
属性下(请注意,您使用的大小写与您的大小写不匹配combineReducers
)。更新您的映射功能以访问disableSelectors
或更新您的combineReducers
,使属性为disableselectors
。
(我个人建议始终使用camelCase
以避免此类问题)。