У меня есть вкладка навигатор и стек навигатор.Вот структура:
const MainNavigator = createBottomTabNavigator({
welcome: { screen: WelcomeScreen },
auth: {
screen: createStackNavigator({
auth: {
screen: AuthScreen,
navigationOptions: {
header: null
}
},
login: {
screen: LoginScreen,
navigationOptions: {
title: 'Login',
headerTintColor: '#fff',
headerStyle: {
backgroundColor: '#3f2141'
}
}
},
newAccount: {
screen: NewAccountScreen,
navigationOptions: {
title: 'Create an Account',
headerTintColor: '#fff',
headerStyle: {
backgroundColor: '#3f2141'
},
headerTitleStyle: {
fontSize: 20
}
}
}
}),
},
main: { screen: MainScreen }
})
Нет проблем при попытке перейти с экрана авторизации на экран входа в систему или экран новой учетной записи.Но я пытаюсь перейти с экрана новой учетной записи на главный экран, если создание учетной записи прошло успешно.Вот код действия, который пытается это сделать:
export const createUser = ({ email, password }) => {
return(dispatch) => {
dispatch({ type: CREATE_USER });
firebase.auth().createUserWithEmailAndPassword(email, password)
.then(user => createUserSuccess(dispatch, user))
.catch(() => createUserFail(dispatch));
};
};
const createUserFail = (dispatch) => {
dispatch({ type: CREATE_USER_FAIL })
};
const createUserSuccess = (dispatch, user) => {
dispatch({
type: CREATE_USER_SUCCESS,
payload: user
});
navigateToMainScreen();
};
const navigateToMainScreen = () => {
this.props.navigation.navigate('main')
};
Но функция навигации здесь не работает, поэтому пользователь создает учетную запись, но экран не меняется.Я понял это и, возможно, причина в том, что один новый экран учетной записи находится в навигаторе стека, в то время как основной экран находится в навигаторе вкладок, но я не могу решить проблему.