Stacknavigator для первого пользователя React Native

У меня есть навигатор стека с вводным экраном и экраном входа в систему.

export const StackerIntro = createStackNavigator({ 
  Intro: {
    screen: Intro,
    navigationOptions: {
      header: null
    }
  },
  Login: {
    screen: Login,
    }
  }, {
 InitialRouteName: "Intro"
})

Как сделать начальный маршрут "Login", если пользователи не впервые в приложении?


person LuizfBrisighello    schedule 05.09.2019    source источник


Ответы (2)


Для условного рендеринга вам, возможно, придется использовать switchNavigation.

1. Сохраните ключ в асинхронном хранилище, если пользователь входит в систему впервые.

  1. Когда пользователь приходит во второй раз, получите ключ в классе навигации с помощью async-await, и если вы получите ключ, перейдите в желаемое место или перейдите к логину.

  2. Используйте SwitchNavigation для условной навигации.

Вы также можете попробовать :

    const routeName = () => {
      var routeName =
        global.isSignUpScreen == false || global.isSignUpScreen == undefined
          ? "LoginScreen"
          : "SignUpScreen";
      console.log("routeName >> " + routeName);
      return routeName;
    };


    const SignUpStack = createStackNavigator(
      {
        LoginScreen: {
          screen: LoginScreen,
          navigationOptions: {
            header: null
          }
        },
        SignUpScreen: {
          screen: SignUpScreen,
          }
      {
        initialRouteName: routeName()
      }
}
    );
person Rishav Kumar    schedule 06.09.2019
comment
Большое спасибо! В итоге я использовал SwitchNavigation и следил за их потоком авторизации. - person LuizfBrisighello; 09.09.2019

Вам не нужно устанавливать initialroute для входа в систему. все, что вам нужно сделать, это сохранить значение в asyncstorage, когда приложение открывается в первый раз, и во второй раз, когда дело доходит до app.js, проверьте, нет ли этого значения. если он там, вам нужно войти в систему, иначе перейдите во вступление.

Ex:

        const value = await AsyncStorage.getItem("installSucess");

      if(value === 'true'){
            navigate to login
        }else{
            navigate to into 
             }

и на вводном экране в первый раз, когда вы установили значение магазина приложений в asynstorage, например

    await AsyncStorage.setItem("installSucess", "true");
person Sai kiran    schedule 05.09.2019
comment
Большое спасибо! В итоге я использовал SwitchNavigation и следил за их потоком авторизации. - person LuizfBrisighello; 09.09.2019