В настоящее время я работаю над проектом, который включает в себя зарегистрированных пользователей.В моем избыточном состоянии у меня есть пользователь, который не является нулевым объектом.Но когда я пытаюсь получить роль из этого пользовательского объекта, я неожиданно получаю сообщение об ошибке «состояние равно нулю»
this.props.userState.user
возвращает пользовательский объект с атрибутом роли.
this.props.userState.user.role
выдает ошибку «Ошибка типа: this.props.userState.user имеет значение NULL»
edit: ниже приведен весь код всего файла.
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);
Редуктор:
const initialState = {
user: null,
finished: false,
}
function copyAndUpdateObj(copiedObject, update) {
return Object.assign({}, copiedObject, update);
}
export default function userReducer(state = initialState, action) {
switch (action.type) {
case INSERT_USER:
return {...state, user: action.userInformation};
case SET_USER: {
let changes = {
user: action.user
}
return copyAndUpdateObj(state, changes);
}
default:
return state;
}
}