Настройка защищенных в реагировать на родной правильно - PullRequest
0 голосов
/ 05 мая 2019

Как правильно настроить защищенные маршруты в реактивном?

В настоящее время у меня есть класс, который проверяет, существует ли пользователь и 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 () для продолжения его перемещения, если он пройдет проверку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...