Условно рендеринг навигатора в v5 - PullRequest
1 голос
/ 19 января 2020

Любая причина, по которой вы не можете условно визуализировать какой-либо Навигатор в реакции-навигации v5?

При просмотре документации по потоку аутентификации все делается для того, чтобы Навигатор всегда отображался. Это плохая идея монтировать / размонтировать Навигаторы?

Например, нормально ли это делать:

<>
      {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 Ответ

1 голос
/ 19 января 2020

Это нормально делать таким образом, но при сохранении того же навигатора будут анимироваться любые изменения состояния, например, когда пользователь войдет в систему, появится экран Home. Изменение навигатора означает избавление от предыдущего состояния навигатора и использование новый навигатор.

Вы также можете оставить экран Spla sh вне навигатора и оставить только экран SignIn и Home в стековом навигаторе. Зависит от того, как вы хотите, чтобы анимации выглядели.

...