在v5中有条件地渲染Navigator

时间:2020-01-19 11:41:36

标签: react-navigation react-navigation-stack

是否有任何理由不在react-navigation v5中有条件地渲染某些Navigator?

当查看Auth流的文档时,将进行所有操作以确保始终显示导航器。安装/卸载导航器是个坏主意吗?

例如,可以这样做吗?

<>
      {isLoading ? (
        <SplashScreen/>
      ) : (
        <NavigationNativeContainer>
          {userToken ? <HomeStackNavigator/> : <SignInStackNavigator/>}
        </NavigationNativeContainer>
      )}
</>

代替此:

<NavigationNativeContainer>
  <Stack.Navigator>
          {isLoading ? (
            <Stack.Screen name="Splash" component={SplashScreen}/>
          ) : state.userToken === null ? (
            <Stack.Screen name="SignIn" component={SignInScreen}/>
          ) : (
            <Stack.Screen name="Home" component={HomeScreen}/>
          )}
  </Stack.Navigator>
</NavigationNativeContainer>

1 个答案:

答案 0 :(得分:1)

可以这样做,但是保持相同的导航器将为任何状态更改(例如当用户登录时,Home屏幕将变为动画。更改导航器意味着摆脱先前导航器的状态并使用新的导航器。

您还可以将“启动”屏幕保留在导航器之外,而仅将SignInHome屏幕保留在堆栈导航器中。取决于您希望动画的外观。