在react-native中设置动态的'initialRouteName'

Kis*_*Oza 7 react-native react-navigation

问题很简单,我知道同一问题有很多答案,但是我设置了自己的App.js文件,但我尝试了几乎所有方法,但都没有成功。

所以我App.js看起来像这样

import React, { Component } from 'react';
import {
  Platform,
  StyleSheet,
  Text,
  View,
  StatusBar
} from 'react-native';
import { createStackNavigator  } from 'react-navigation';
import { Header, Button, Spinner } from './src/components/comman';
import SplashScreen from 'react-native-splash-screen';
import LoginForm from './src/components/LoginForm';
import SignupForm from './src/components/SignupForm';
import Home from './src/components/Home';
import ForgetPassword from './src/components/ForgetPassword';


import { YellowBox } from 'react-native';
YellowBox.ignoreWarnings(['Warning: isMounted(...) is deprecated', 'Module RCTImageLoader']);
const App = createStackNavigator ({
  Login: { screen: LoginForm },
  Home: { screen: Home },
  Signup: { screen: SignupForm },
  ForgetPassword: { screen : ForgetPassword },
  },
  { 
  initialRouteName: 'Login',
  });

export default App;
Run Code Online (Sandbox Code Playgroud)

现在我在保存登录状态AsyncStorage,我LoginForm.js喜欢这个

.
.
AsyncStorage.setItem('isLoggedIn', 'true').then((a) => {
    this.onLoginSuccess(responseData.user_id);
});
.
.
Run Code Online (Sandbox Code Playgroud)

所以现在我想initialRouteName根据本地存储元素进行设置。简单,如果isLoggedIntrueinitialRouteName : Home不然initialRouteName : Login

很简单,但是不要在其中使用 my App.js

请帮忙 :)

Moh*_*h75 8

正如你可以看到在这里

如果需要将initialRouteName设置为prop,那是因为在呈现应用程序导航之前,需要异步获取一些数据。解决此问题的另一种方法是使用Switchnavigator并在获取异步数据时显示一个屏幕,然后在必要时使用参数导航到适当的初始路由。有关完整示例,请参见docs

这是一个开放的RFC

更新

看看这里

您会发现更多描述!