如何在登录成功后加载主屏幕而不显示登录屏幕?

How to load Home screen without showing login screen after login successful?

有两个用于屏幕导航的堆栈导航器。我想为 isloggedin 获取条件。如果登录用户则 select Appstack 既不是 AuthStack。如何在这段代码中做到这一点?有人可以建议我修改吗?

const AuthStack = createStackNavigator({
    Welcome: {screen: WelcomeScreen,
      navigationOptions: {
        header:null
      }},
    Login:  LoginScreen,
    Signup: SignupScreen,
    Forgot:ForgotScreen,
});

const AppStack =createStackNavigator(
    {
        Dashboard: DashboardScreen,
        ScanScreen:ScanScreen,
    });


export default createSwitchNavigator(
    {
      App:AppStack,
      Auth:AuthStack,
    },
    {   
      initialRouteName:'Auth',
    }
);

在您定义和导出路由器的地方,定义并导出一个函数,该函数接受布尔参数 'isLoggedIn' 和 returns 相应的路由器,基于 isLoggedIn 的值。

const AuthStack = createStackNavigator({
    Welcome: {screen: WelcomeScreen,
      navigationOptions: {
        header:null
      }},
    Login:  LoginScreen,
    Signup: SignupScreen,
    Forgot:ForgotScreen,
});

const AppStack =createStackNavigator(
    {
        Dashboard: DashboardScreen,
        ScanScreen:ScanScreen,
    });

// This is the function that does the work, it will render
// the either Auth or App router, based on if you're logged in.
export const createRootNavigator = (isLoggedIn = false) => {
   if (isLoggedIn === false) {
      return <AuthStack/>
   } else {
      return <AppStack/>
   }
};

然后在您的应用程序组件(或任何渲染路由器的地方)中,我们需要导入此函数,并无论用户当前是否登录都将其传递给它。

'file-above.js' 是上面的代码,即您在示例中给出的代码。

下面的粗略示例。

// We import the file
import {createRootNavigator} from './file-above.js'

class App extends Component {

    constructor (props) {
        super(props);

        this.state({
           // Switching this will switch your stack router.
           loggedIn: false
        });
    }

    render () {

        const {loggedIn} = this.state;

        // Here we're rendering the router, passing in the 
        // loggedIn variable from state, this will dictate if the
        // Auth or App router is rendered.      
        return createRootNavigator(loggedIn); 
    }
}

当然这里缺少的是应用程序组件状态切换上的 'loggedIn' 字段,使用上面的代码,通过构造函数定义更改 loggedIn 的值,然后连接到您的登录表单(s)等