React native 我可以在堆栈导航器中使用条件吗?

React native 我可以在堆栈导航器中使用条件吗?,react-native,react-props,stack-navigator,React Native,React Props,Stack Navigator,我是这方面的新手,所以我想了解我是否可以在导航参数中使用条件if和else 所以在Stack Navigator之前,我在app.js中使用了以下代码 render() { var renderMainView = () => { if (this.props.user_id) { return ( <Main /> ); } else { return (

我是这方面的新手,所以我想了解我是否可以在导航参数中使用条件
if
else

所以在Stack Navigator之前,我在
app.js中使用了以下代码

render() {
    var renderMainView = () => {
      if (this.props.user_id) {
        return (
          <Main />
        );
      } else {
        return (
          <Login />
        );
      }
    }
    return (
      <View style={{flex: 1}}>
        <StatusBar barStyle="light-content"/>
        {renderMainView()}
        <AlertContainer/>
      </View>
    )
}
render(){
var renderMainView=()=>{
if(this.props.user\u id){
返回(
);
}否则{
返回(
);
}
}
返回(
{renderMainView()}
)
}
现在看起来像这样

render() {
    return (
      <View style={{flex: 1}}>
        <StatusBar barStyle="light-content"/>
        <AppNavigator />
        <AlertContainer/>
      </View>
    )
  }
<TouchableOpacity onPress={handleSubmit(_signIn)} style={{margin: 10, alignItems: 'center'}}>
  <Text style={{
   backgroundColor: 'steelblue', color: 'white', fontSize: 16,
   height: 37, width: 200, textAlign: 'center', padding: 10
}}>Login</Text>
render(){
返回(
)
}
在Login.js中,它以前是这样的

render() {
    return (
      <View style={{flex: 1}}>
        <StatusBar barStyle="light-content"/>
        <AppNavigator />
        <AlertContainer/>
      </View>
    )
  }
<TouchableOpacity onPress={handleSubmit(_signIn)} style={{margin: 10, alignItems: 'center'}}>
  <Text style={{
   backgroundColor: 'steelblue', color: 'white', fontSize: 16,
   height: 37, width: 200, textAlign: 'center', padding: 10
}}>Login</Text>

登录
我现在的问题是,我应该如何在内部传递
onPress={()=>this.props.navigation.navigate('Main')}
,在进入主屏幕之前,首先调用this
handleSubmit(\u signIn)
,然后选中
this.props.use\u id
,您可以使用它来实现所需的行为

下面是示例代码:

const AppStack = StackNavigator({ Home: HomeScreen, Other: OtherScreen });
const AuthStack = StackNavigator({ SignIn: SignInScreen });

export default SwitchNavigator(
  {
    AuthLoading: AuthLoadingScreen,
    App: AppStack,
    Auth: AuthStack,
  },
  {
    initialRouteName: 'AuthLoading',
  }
);
切换导航器参考

SwitchNavigator(路由图、SwitchNavigator配置)

可能重复的