React Reducer返回未定义

时间:2018-09-19 23:20:41

标签: javascript reactjs redux

我在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;

这有什么问题吗?因为我的其他道具和减速器工作正常

1 个答案:

答案 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 以避免此类问题)。