Как правильно настроить защищенные маршруты в реактивном?
В настоящее время у меня есть класс, который проверяет, существует ли пользователь и isAuthenticated , затем он должен переместить его на определенный маршрут, иначе он должен переместить его на маршрут приземления
class AuthChecker extends PureComponent {
componentDidMount () {
firebase.auth().onAuthStateChanged((user) => {
if (this.props.isAuthenticated && user) {
return this.props.navigation.navigate('drawer');
} else {
return this.props.navigation.navigate('Landing');
}
});
}
render() {
return (
<View>
<Text> Loading...</Text>
</View>
);
}
}
const mapStateToProps = state => {
return {
isAuthenticated: state.profile.isAuthenticated,
signup_process_intial: state.profile.signup_process_intial
}
};
const AuthCheckerRoute = connect(mapStateToProps)(AuthChecker)
const allRoutes = createSwitchNavigator(
{
authChecker: {
screen: AuthCheckerRoute
},
Auth: {
screen: loginNavigation
},
drawer: {
screen: drawerNavigation
},
onboarding: {
screen: onboardingNavigation
}
},
{
initialRouteName: "authChecker"
}
);
const Navigator = createAppContainer(allRoutes);
Теперь проблема заключается в том, что всякий раз, когда мое состояние изменяется, например, на экране регистрации, у меня есть кнопка, которая при нажатии запускает избыточное действие.
это заставляет мое приложение снова работать с (из Auth Checker componentDidMount)
return this.props.navigation.navigate('Landing');
, следовательно, мое приложение запускается с оригинального целевого экрана.
В моем классе экрана регистрации у меня есть следующий код в render
render() {
if (this.props.signup_process_intial) {
this.props.navigation.navigate('YourPhoneNumber')
}
, который должен перевести его на экран YourPhoneNumber, Как настроить маршрут, чтобы он перешел на
this.props.navigation.navigate('YourPhoneNumber')
Экран, вместо
return this.props.navigation.navigate('Landing');
В типичном nodejs-express
у нас будет что-то вроде next () для продолжения его перемещения, если он пройдет проверку