Javascript Redux状态已填充,但我得到的错误状态为空
我目前正在从事一个涉及登录用户的项目。在我的redux状态中,我有一个用户,它是一个非null的对象。但当我试图从这个用户对象获取角色时,我突然得到一个错误状态为nullJavascript 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
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) {...}