Я использую Redux, и я хочу отобразить мой основной ящик, если пользователь вошел в систему или нет. У меня есть этот класс 'init', который проверит это и сделает это соответствующим образом.
Я опубликую код и объясню в конце:
Init.js
const mapStateToProps = (userReducer) => {
return {
...userReducer,
}
}
const mapDispatchToProps = (dispatch) => {
return {
dispatch,
getCurrentUser: () => {
dispatch(getCurrentUser())
}
}
}
class Init extends Component {
constructor(props) {
super(props);
this.props.getCurrentUser()
console.log("TEST>>")
console.log(this.props)
}
chooseInitialRoute() {
const { navigation, user } = this.props;
if (user) {
navigation.dispatch(StackActions.reset(
{ index: 0, key: null, actions: [NavigationActions.navigate({ routeName: 'LoggedDrawer' })] }
))
} else {
navigation.dispatch(StackActions.reset(
{ index: 0, key: null, actions: [NavigationActions.navigate({ routeName: 'UnloggedDrawer' })] }
))
}
}
user_actions.js
export function getCurrentUser() {
return (dispatch) => {
Parse.User.currentAsync().then(function (user) {
if (user) {
dispatch({ type: 'GET_USER', payload: { user } })
} else {
dispatch({ type: 'GET_USER_REJECTED', payload: error })
}
})
}
}
console.log (this.props) возвращает неопределенное значение, если вызывается внутри конструктора (то же самое происходит, когда я console.log (props) . Но если я вызываю его внутри render () Я получаю реквизиты правильно (это означает, что я получаю правильный пользовательский объект с сервера разбора).
Есть ли способ обновить реквизит перед методом render ()? Я хочу получить «обновленные» реквизиты на chooseInitialRoute ()
Заранее спасибо. Если нужно больше кода, дайте мне знать.