Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Redux状态已填充,但我得到的错误状态为空_Javascript_Reactjs_React Redux_State_Store - Fatal编程技术网

Javascript Redux状态已填充,但我得到的错误状态为空

Javascript Redux状态已填充,但我得到的错误状态为空,javascript,reactjs,react-redux,state,store,Javascript,Reactjs,React Redux,State,Store,我目前正在从事一个涉及登录用户的项目。在我的redux状态中,我有一个用户,它是一个非null的对象。但当我试图从这个用户对象获取角色时,我突然得到一个错误状态为null this.props.userState.user 返回具有角色属性的用户对象 this.props.userState.user.role 抛出错误TypeError:this.props.userState.user为null 编辑:以下是整个文件中的所有代码 class ResultsMain extends C

我目前正在从事一个涉及登录用户的项目。在我的redux状态中,我有一个用户,它是一个非null的对象。但当我试图从这个用户对象获取角色时,我突然得到一个错误状态为null

this.props.userState.user 
返回具有角色属性的用户对象

this.props.userState.user.role 
抛出错误TypeError:this.props.userState.user为null

编辑:以下是整个文件中的所有代码

class ResultsMain extends Component {

componentDidMount() {
    firebase.auth().onAuthStateChanged(user => {
        if (user)
            getUser(user.email).then(foundUser => {
                console.log('User found:', foundUser);
                this.props.doSetUser(foundUser);
            }).catch((err) => {
                console.log(err)
                this.props.history.push('/');
            });
    });
}

render() {
    console.log("THE PROPS", this.props.userState.user)
    if (this.props.userState.role === "teacher") return <TeacherSearchPage/>
    else return <Results />
    //else return <div> </div>
}
}

function mapStateToProps(state) {
    return {
        userState: state.userState,
    }
}

function mapDispatchToProps(dispatch) {
    return {
        doSetUser: user => dispatch(userActions.setUser(user)),
    }
}

export const resultsMainPage = ReactRedux.connect(mapStateToProps, mapDispatchToProps)(ResultsMain);

您的减速器必须是以下类型的:

function reducer(state = initialState, action) {...}
无论this.props.userState的值是多少,都来自您在一开始对initialState的定义。请确保在应用程序中定义initialState对象


仔细检查您是否在初始状态下定义了userState.user。

在任何人都可以帮助您之前,您需要提供一个用户初始状态为null?您可以共享一些代码库吗?还原程序是使用初始状态声明的,我将编辑我的帖子并包含此还原程序。填充用户对象的方式是通过Firebase通过云函数使用GitHub身份验证,因此reducer仅将此对象插入状态。该状态在reducer中称为user,您正试图在组件中以userState的形式访问它。
function reducer(state = initialState, action) {...}