¿Cómo agrego pantallas públicas a react-navigation?

¿Cómo agrego pantallas públicas a react-navigation?

Estoy creando una aplicación nativa de reacción usando Expo y navegación de reacción, la aplicación actualmente tiene dos navegadores, uno es visible para los usuarios autenticados y el otro solo es visible para los usuarios no autenticados, como la página de inicio de sesión.

Esta es la estructura de navegación:

function Navigation({ isLoggedIn }) {
  return (
    <NavigationContainer>
      {isLoggedIn ? (
        <Stack.Navigator>
          <Stack.Screen name="home" component={Home}></Stack.Screen>
          <Stack.Screen name="public" component={Public}></Stack.Screen>
        </Stack.Navigator>
      ) : (
        <Stack.Navigator>
          <Stack.Screen name="login" component={Login}></Stack.Screen>
          <Stack.Screen name="public" component={Public}></Stack.Screen>
        </Stack.Navigator>
      )}
    </NavigationContainer>
  );
}

como puede ver, hay una pantalla llamada 'pública' que aparece dos veces en ambos navegadores porque quiero que las personas puedan ver este componente independientemente de su estado de autenticación, ¿es esta la forma correcta de hacerlo?

Mostrar la mejor respuesta

En lugar de iniciar dos Stack Navigator separados según el estado de isLoggedIn, lo que puede hacer es iniciar un Stack Navigator y luego colocar pantallas según el estado de isLoggedIn. Me gusta el siguiente

      <NavigationContainer>
        <Stack.Navigator>
          
          {isLoggedIn ? (
            <Stack.Screen name="home" component={Home}></Stack.Screen>
          ) : (
            <Stack.Screen name="login" component={Login}></Stack.Screen>
          )}
          
          <Stack.Screen name="public" component={Public}></Stack.Screen>
        </Stack.Navigator>
      </NavigationContainer>
    

De esta manera, no tiene que poner la pantalla 'pública' dos veces, sino que los usuarios pueden ver esa pantalla independientemente de su estado de autenticación. Además, no es necesario que inicie StackNavigator dos veces.

@R.Shen, si la respuesta ayuda, no olvide 'aceptar' la respuesta :)

¡Muchas gracias!

@R.Shen, no te preocupes, sigue intentándolo. Si tiene algún problema, estamos aquí para ayudarlo. :)